我正在一个项目中,我将不得不分析设备发出的信号。我有一个图书馆在工作,可以从设备中获取数据。到目前为止,我正在收集数据,然后将其绘制出来。我对构建实时数据监控器感兴趣,该监控器可以实时绘制图形。搜索后,我发现PyQtGraph非常适合该任务。我对Qt不熟悉,因此我正在寻找可以根据需要进行修改的示例。 PyQtGraph文档中提供的一些示例可实时更新绘图,但我需要一个实时监控器(Live Monitor),该图形在不断接收数据的同时向右移动。

如果它类似于已知的连续函数,则可以使用x - w*t作为时间来更新输入的t,以使波向右移动。但这是离散的数据,因此我不确定如何使用PyQtGraph使其工作。因此,如果有人可以提出一些建议,那就太好了。

截至目前,这就是我所拥有的

代码

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)

这是每2秒更新一次数据,但我希望它向右移动。

最佳答案

要使绘图滚动,您可以使用以下三个选项:

  • 滚动原始数据并重新绘制(请参阅numpy.roll)
    curve = plotItem.plot(data)
    data = np.roll(data, 1)  # scroll data
    curve.setData(data)      # re-plot
    
  • 移动绘图曲线,使其在 View 中滑动:
    curve = plotItem.plot(data)
    curve.setPos(x, 0)  # Move the curve
    
  • 移动 View 区域,以使绘图曲线看起来可以滚动
    curve = plotItem.plot(data)
    plotItem.setXRange(x1, x2)  # Move the view
    

  • scrolling-plots example(当前仅在开发版本中)演示了以下每一项:

    关于python - 实时数据监控器: PyQtGraph,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24197910/

    10-12 22:46
    查看更多