** AxisItem class 를 subclass 하여, 원하는 axis 만들수 있다.
--> 특히, tickStrings( ) 메소드를 override 하여, tick 에 원하는 양식으로 출력 변경가능하다.
** 최근 시간만 보여주기
--> setData( ) 로 실시간 chart 그리기전에, setXRange( ) 이용하여, 최근 시간만 설정하면 ok!!!
# https://freeprog.tistory.com/373?category=716617
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import *
import pyqtgraph as pg
import time
class TimeAxisItem(pg.AxisItem):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setLabel(text='Time(초)', units=None)
self.enableAutoSIPrefix(False)
def tickStrings(self, values, scale, spacing):
""" override 하여, tick 옆에 써지는 문자를 원하는대로 수정함.
values --> x축 값들 ; 숫자로 이루어진 Itarable data --> ex) List[int]
"""
# print("--tickStrings valuse ==>", values)
return [time.strftime("%H:%M:%S", time.localtime(local_time)) for local_time in values]
class ExampleWidget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.pw = pg.PlotWidget(
title="Example plot",
labels={'left': 'y 축'},
axisItems={'bottom': TimeAxisItem(orientation='bottom')}
)
hbox = QHBoxLayout()
hbox.addWidget(self.pw)
self.setLayout(hbox)
self.pw.setYRange(0, 70, padding=0)
time_data = int(time.time())
self.pw.setXRange(time_data - 10, time_data + 1) # 생략 가능.
self.pw.showGrid(x=True, y=True)
# self.pw.enableAutoRange()
self.pdi = self.pw.plot(pen='y') # PlotDataItem obj 반환.
self.plotData = {'x': [], 'y': []}
def update_plot(self, new_time_data: int):
data_sec = time.strftime("%S", time.localtime(new_time_data))
self.plotData['y'].append(int(data_sec))
self.plotData['x'].append(new_time_data)
self.pw.setXRange(new_time_data - 10, new_time_data + 1, padding=0) # 항상 x축 시간을 최근 범위만 보여줌.
self.pdi.setData(self.plotData['x'], self.plotData['y'])
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
ex = ExampleWidget()
def get_data():
new_time_data = int(time.time())
ex.update_plot(new_time_data)
mytimer = QTimer()
mytimer.start(1000) # 1초마다 갱신 위함...
mytimer.timeout.connect(get_data)
ex.show()
sys.exit(app.exec_())
'PyQtGraph 공부.' 카테고리의 다른 글
Study 6 : 최근 특정 수 만큼의 데이타만 남기고 싶을때. (0) | 2021.08.24 |
---|---|
Study 5 : 그래프 라이브러리 PyQtGraph 2D Graph 예제 코드 (0) | 2021.08.24 |
Study 3 : pyqtgraph -- realtime chart 그리기 (0) | 2021.08.24 |
Study 2 : pyqtgraph -- bar chart 그리기, 여백 제거 (0) | 2021.08.24 |
Study 1 : pyqtgraph -- pyqt5 에서 사용 -- line chartPyQt5 (0) | 2021.08.24 |