我正在处理一个项目,需要分析来自设备的信号。我已经有了一个工作库,可以从设备中获取数据。目前,我正在收集数据并将其绘制成图表。我想构建一个实时数据监视器,可以实时绘制图形。通过搜索,我发现PyQtGraph非常适合这个任务。由于我不熟悉Qt,因此我正在寻找可以根据自己的需求修改的示例。PyQtGraph文档中提供了一些示例,可以实时更新图表,但我需要像实时监视器那样移动图形,因为它不断接收数据。
如果这是一个已知的连续函数,我可以使用输入x-w*t
来更新,并且t
是时间,以使波向右移动。但是这是离散数据,所以我不确定如何使用PyQtGraph使其正常工作。因此,如果有人能够提供如何操作的指针,那将是很好的。
目前我只有这些代码:
Code
app = QtGui.QApplication([])
#mw = QtGui.QMainWindow()
#mw.resize(800,800)
win = pg.GraphicsWindow(title="Basic plotting examples")
win.resize(1000,600)
win.setWindowTitle('pyqtgraph example: Plotting')
# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
p6 = win.addPlot(title="Updating plot")
curve = p6.plot(pen='r')
X_axis = numpy.linspace(0,100,12800)
#'data' is my required y_axis containing 12800 values
ydata = np.array_split(data,50)
xdata = np.array_split(X_axis,50)
ptr = 0
def update():
global curve, data, ptr, p6
curve.setData(xdata[ptr%50],ydata[ptr%50])
ptr += 1
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(1000)
这里每两秒更新一次数据,但我希望它向右移动。
graphicsItems/AxisItem.py
文件中的__init __()
方法,在其中你会看到self.style['textFillLimits']
,它是用于确定最佳刻度间距的一组启发式算法。你可以在任何AxisItem上修改这些值。 - Luke