Pyqtgraph 解决数据量太多卡顿问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言(整个工程在最后)

提示:这里可以添加本文要记录的大概内容:

例如:pyqtgraph 在大量数据绘制是,造成界面卡顿问题!该文章解决以90000w数据为例!


提示:以下是本篇文章正文内容,下面案例可供参考

解决方案

问题原因

1.造成卡顿的原因主要是绘制的数据量太多的原因,所以有效的解决办法是只绘制我们所见的一部分,通过sigRangeChanged信号,我们可以获取到实时的x区间和y区间的变化区间!所以在每次绘制时,需要重新选择我们需要绘制的点个数!

实时检测x,y区间代码如下所示

 def updateRegion(self, a, lineshow):
 		self.widget.sigRangeChanged.connect(self.updateRegion)
        self.showminx = lineshow[0][0]
        self.showmaxx =lineshow[0][1]

绘制取点区间代码

本段代码中,self。data 为我们的数据,主要意思就是将显示区间内的数据先去出来

self.data_for_draw = self.data[0 if self.showminx < 0 else int(self.showminx):1 if self.showmaxx < 1 else int(self.showmaxx + 5) ].copy()

当我们实现以上发现,当我们查看整个视图时,任然会出现卡顿,这是我做了 间隔取点处理,保证我们整个视角中 只需要绘制N个点,这里我使用了一个Spinbox;

以下是我间隔取点的代码

def showfunc(self, num):
    a = int(abs(self.showminx - self.showmaxx) // self.spinBox.value())
    return num[::a + 1]

可以更加优化,当我在间隔取点时,容易造成某些极值点的丢失,可能会出现一写视觉上的误差,对数据本身没太大影响!(放大一样能看到)

在这里插入图片描述
非常的丝滑

代码在此,请下载后不要忘了点个赞!

https://download.csdn.net/download/CxzKkgg/85048093


版权声明:本文为CxzKkgg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。