
import pyqtgraph as pg import numpy as np from pyqtgraph.Qt import 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) #在坐標p中繪圖並返回圖形對象 def update(): global data, curve data[:-1] = 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 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:] data[-1] = np.random.random() curve.setData(data) ptr += 1 curve.setPos(ptr, 0) #給圖形對象設置新的坐標值 #參數1:x軸起點坐標 #參數2:y軸起點坐標 timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(100) app.exec_()

p.setRange(xRange=[-100, 0]) # 將橫坐標的范圍限定為[-100,0] p.setLimits(xMax=0) # 橫坐標的最大值為0

