更新pyqtgraph的最佳方法?

Posted

技术标签:

【中文标题】更新pyqtgraph的最佳方法?【英文标题】:Best way to update a pyqtgraph? 【发布时间】:2021-03-24 13:48:54 【问题描述】:

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

在以低于或等于每秒 1 点的速度收集和绘制几个小时后,绘制变得非常缓慢,我认为这不是因为内存不足(8 字节 x 12 小时 x 3600 次测量/小时 x 5 个信号 ~ 1.6 MB 并且我至少有 2GB 的 RAM)所以我认为重新绘制和清除信号可能会有延迟,这种情况也每秒发生一次。

目前我正在使用:

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

更新我的情节。有一个更好的方法吗?一些功能可以将数据点添加到绘图而不重新报告整个事情。话虽如此,我要继续尝试:

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

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

【问题讨论】:

【参考方案1】:

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

您不能以增量方式将数据点添加到图表中,因为这样会导致线条不连续;您每次都必须重新绘制每个数据点。但是,可以通过使用 setData 方法更有效地执行此操作,正如我的回答 here 所解释的那样。

同时禁用坐标区自动范围也会有很大帮助。

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

【讨论】:

感谢您的提示,它们很有帮助。我会接受答案。

以上是关于更新pyqtgraph的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 更新用户数据的最佳方法是啥?

经常更新 xml 文件的最佳方法是啥?

在实体框架中更新实体的最佳方法[重复]

在春季获取、转换和更新数据的最佳方法是啥?

解析服务器:用远程数据更新本地存储的最佳方法是啥

连续检查 MySQL 表更新的最佳方法是啥?