파이썬 mplfinance로 그린 차트를 pyqt5로 만든 윈도우에 삽입하고 싶습니다.
Matplotlib으로 작성한 차트는 pyqt5로 제작한 원도우에 쉽게 넣을 수 있었는데요,
nplfinance로 그린 주식 차트를 윈도우에 삽입하는게 쉽지 않네요.
파일 실행 시 팝업으로 주식차트가 뜨는거 말고, 시작부터 윈도우에 삽입이 되어 있었으면 좋겠습니다. 버튼들과 함께 구성해서 차트 보는 프로그램을 만들려고 합니다.
참고할만한 좋은 사이트나 예제 코드가 있으면 부탁드립니다. 감사합니다.
참고 1 : http://www.gisdeveloper.co.kr/?p=8343
참고 2 : https://chancoding.tistory.com/111
참고 3 : https://m.blog.naver.com/townpharm/220950438948
[예제용 소스코드]
# -- coding: utf-8 --
"""
Created on Mon May 10 14:06:39 2021
@author: raven90
"""
import sys
import numpy as np
from PyQt5.QtWidgets import *
from mplfinance import candlestick2ohlc
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import pandas as pd
from pandas_datareader import data
from datetime import datetime
#app = QApplication(sys.argv)
#win = QWidget()
#win.show()
#app.exec_()
class MyWindow(QWidget):
def init(self):
super().init()
self.initUI()
self.setLayout(self.layout)
self.setGeometry(200, 200, 800, 600)
def initUI(self):
self.fig = plt.Figure()
self.canvas = FigureCanvas(self.fig)
layout = QVBoxLayout()
layout.addWidget(self.canvas)
self.layout = layout
self.doGraph1()
def doGraph1(self):
# 데이터를 가져올 날짜 설정
start_date = datetime(2020,5,8)
end_date = datetime(2020,10,8)
# 야후에서 코스피 데이터 가져오기
kospidf = data.getdatayahoo("^KS11", startdate, end_date)
display(kospi_df.head(5))
# 지수 이동평균선 데이터 구하기
kospidf['MA3'] = kospidf['Close'].rolling(3).mean()
kospidf['MA5'] = kospidf['Close'].rolling(5).mean()
kospidf['MA10'] = kospidf['Close'].rolling(10).mean()
kospidf['MA20'] = kospidf['Close'].rolling(20).mean()
display(kospi_df.head(5))
self.fig.clear()
# 그래프 그리기
#self.fig, ax = plt.subplots(figsize=(10,5))
ax = self.fig.add_subplot(1, 1, 1)
ax.set_title('KOSPI INDEX', fontsize=15)
ax.set_ylabel("KOSPI")
ax.set_xlabel("Date Time")
ax.plot(kospidf.index, kospidf[['Close','MA5','MA10']])
ax.legend(['Close','MA5','MA10'])
#plt.show()
self.canvas.draw()
if name == "main":
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec_()
[실행결과 캡쳐]