주식 데이터는 시계열 데이터이므로 그래프의 x축은 날짜와 시간을 표시합니다.
QtChart 에서 그래프의 x축을 시계열로 표현할 때 QDateTimeAxis 클래스를 사용합니다.
68-1 예제: ex67
import sys import FinanceDataReader as fdr import pyupbit as upbit from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtChart import QChart, QChartView, QLineSeries, QDateTimeAxis, QValueAxis from PyQt5.QtGui import QPainter from PyQt5.QtCore import Qt class MyApp(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # data 셀트리온 주가 지수 df = fdr.DataReader("068270", "2021") series = QLineSeries() for i in df.index: series.append(i.timestamp() * 1000, df.loc[i]['Close']) # chart chart = QChart() chart.legend().hide() chart.addSeries(series) # axis axis_x = QDateTimeAxis() axis_x.setFormat('MM/dd') chart.addAxis(axis_x, Qt.AlignBottom) series.attachAxis(axis_x) axis_y = QValueAxis() axis_y.setLabelFormat('%i') chart.addAxis(axis_y, Qt.AlignLeft) series.attachAxis(axis_y) # margin chart.layout().setContentsMargins(0, 0, 0, 0) # displaying chart chart_view = QChartView(chart) chart_view.setRenderHint(QPainter.Antialiasing) # displaying window self.setCentralWidget(chart_view) self.setMinimumSize(800, 600) self.setWindowTitle("QtChart TimeLine") self.show() if __name__ == "__main__": app = QApplication(sys.argv) win = MyApp() sys.exit(app.exec_()) |
68-2 결과
68-3 예제: 비트코인
import sys import FinanceDataReader as fdr import pyupbit import pyupbit as upbit from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtChart import QChart, QChartView, QLineSeries, QDateTimeAxis, QValueAxis from PyQt5.QtGui import QPainter from PyQt5.QtCore import Qt class MyApp(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # data 셀트리온 주가 지수 # df = fdr.DataReader("068270", "2021") df = pyupbit.get_ohlcv("KRW-BTC", "2021") series = QLineSeries() for i in df.index: series.append(i.timestamp() * 1000, df.loc[i]['close']) # chart chart = QChart() chart.legend().hide() chart.addSeries(series) # axis axis_x = QDateTimeAxis() axis_x.setFormat('MM/dd') chart.addAxis(axis_x, Qt.AlignBottom) series.attachAxis(axis_x) axis_y = QValueAxis() axis_y.setLabelFormat('%i') chart.addAxis(axis_y, Qt.AlignLeft) series.attachAxis(axis_y) # margin chart.layout().setContentsMargins(0, 0, 0, 0) # displaying chart chart_view = QChartView(chart) chart_view.setRenderHint(QPainter.Antialiasing) # displaying window self.setCentralWidget(chart_view) self.setMinimumSize(800, 600) self.setWindowTitle("QtChart TimeLine") self.show() if __name__ == "__main__": app = QApplication(sys.argv) win = MyApp() sys.exit(app.exec_()) |
68-4 결과
'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
71. Finplot Candlestick PyQt에 그리기 (0) | 2021.08.18 |
---|---|
70. Finplot 기본 챠트 그리기 (0) | 2021.08.18 |
67. PyQtChart 줄 그리기 (0) | 2021.08.17 |
65. PyQtGraph 시계열 그래프 그리기 (0) | 2021.08.13 |
64. PyQtGraph 그래프 두 개 그리기 (0) | 2021.08.13 |