python - 实时数据监视器 : PyQtGraph

标签 python pyqt4 pyqtgraph

我正在从事一个项目,我必须分析来自设备的信号。我有一个图书馆在工作,可以从设备获取数据。截至目前,我正在收集数据然后绘制它。我有兴趣构建一个可以实时绘制图表的实时数据监视器。经过搜索,我发现 PyQtGraph 是完成这项任务的理想选择。我不熟悉 Qt,所以我正在寻找可以根据需要修改的示例。 PyQtGraph 文档中给出的一些示例会实时更新绘图,但我需要像实时监视器这样的东西——图表在不断接收数据时向右移动。

如果它类似于已知的连续函数,我可以将输入 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 秒更新一次数据,但我希望它向右移动。

最佳答案

要制作情节滚动,您有三种选择:

  1. 滚动原始数据并重新绘制(参见 numpy.roll)

    curve = plotItem.plot(data)
    data = np.roll(data, 1)  # scroll data
    curve.setData(data)      # re-plot
    
  2. 移动绘图曲线,使其滑过 View :

    curve = plotItem.plot(data)
    curve.setPos(x, 0)  # Move the curve
    
  3. 移动 View 区域,使绘图曲线看起来滚动

    curve = plotItem.plot(data)
    plotItem.setXRange(x1, x2)  # Move the view
    

scrolling-plots example (目前仅在开发版本中)演示了其中的每一个:

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

相关文章:

python - pyqtgraph 文档示例不适用于 PySide

python - 在 PyQtGraph 中设置 zValue

python - 从 pyqtgraph 获取 imageitem 值

Python,multiprocessing.pool 花费的时间与 for 循环大致相同

python - 双击 PyQt4 QTableWidget 上的行将内容设置为 -1

python - Pandas:根据多列从数据框中删除观察结果

python - PyQt - 如何打开目录文件夹?

python - python日期字符串操作的有效方法

python - 无效架构 : No connection adapters were found for