提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言(整个工程在最后)
提示:这里可以添加本文要记录的大概内容:
例如: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]
可以更加优化,当我在间隔取点时,容易造成某些极值点的丢失,可能会出现一写视觉上的误差,对数据本身没太大影响!(放大一样能看到)
非常的丝滑