更新 pyqtgraph 的最佳方式?

Best way to update a pyqtgraph?

我正在开发一个应用程序来收集和显示实验数据,并控制多个设备。我正在使用 Timer 进行绘图,该 Timer 从多个数组中提取数据,这些数组由负责数据收集的其他 QTimer 不断填充。

在以低于或等于每秒 1 点的速度收集和绘图几个小时后,绘图变得非常缓慢,我不认为这是因为我 运行 内存不足( 8 bytes x 12 hours x 3600 measurements/hour x 5 signals ~ 1.6 MB and I have at least 2GB of RAM) 所以我认为信号的重新绘制和清除可能会有延迟,这也是每秒发生的.

目前我正在使用:

PlotItem.plot(x, y, clear=True) 

更新我的情节。有一个更好的方法吗?一些功能可以将数据点添加到绘图中而无需重新制作整个东西。话虽如此,我要继续尝试:

PlotItem.plot(x[-2:-1], y[-2:-1], clear=False) 

但这可能有点复杂,因为我必须区分新数据和旧数据。谁有更优雅的解决方案?

根据我的经验,绘图在大约 100000 点时变得明显变慢,因此使用 5 个 12*3600 点的绘图就可以达到这一点。

您不能将数据点递增地添加到图形中,因为这样线条就会不连续;您每次都必须重新绘制每个数据点。但是,如我的回答 .

所述,使用 setData 方法可以更有效地执行此操作

同时禁用轴自动范围会有很大帮助。

最后,我注意到如果同时使用抗锯齿和大于 1.0 的线宽,绘图会变得非常慢

我根据此处的建议,添加了一个重要部分:跳过 out-of-sync 信号。

我为每个信号添加了一个时间戳,当需要绘制它时,如果它过时了 100 毫秒,我会放弃它。

这样旧的帧就不会积压——你在途中丢弃了一些帧,但这并不重要,因为新的信号包含它们...

希望这对某人有所帮助