import pyqtgraph as pg import numpy as np from pyqtgraph.Qt import QtGui, QtCore app = pg.QtGui.QApplication([]) win = pg.GraphicsWindow(title="數據滾動") win.resize(600,300) p = win.addPlot() data = np.random.random(size=50) curve = p.plot(data) def update(): global data, curve data[:-1] = data[1:] #數據向左滾動1位,也可以用data = np.roll(data,-1)實現 data[-1] = np.random.random() #末位更改為隨機值 curve.setData(data) timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(100) app.exec_()
上面的圖形,數據更新后,橫坐標並沒有跟隨新的數據做出改變,這里可以用setPos來實現
import pyqtgraph as pg import numpy as np from pyqtgraph.Qt import QtGui, QtCore app = pg.QtGui.QApplication([]) win = pg.GraphicsWindow(title="數據滾動") win.resize(600,300) p = win.addPlot() data = np.random.random(size=50) curve = p.plot(data) ptr=0 def update(): global data, curve, ptr data[:-1] = data[1:] #數據向左滾動1位,也可以用data = np.roll(data,-1)實現 data[-1] = np.random.random() #末位更改為隨機值 curve.setData(data) ptr += 1 curve.setPos(ptr,0) timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(100) app.exec_()