我正在使用 PyQwt 绘制一个适度的数据集(666528 点),它需要很长时间才能重新绘制缩放等。
ncalls tottime percall cumtime percall filename:lineno(function)
1 2.115 2.115 2.116 2.116 {built-in method replot}
我期待接近 100 毫秒而不是 2.1 秒
看起来其他人在使用 Qwt 时遇到了同样的问题,但解决方案建议都与 Qwt6 中可用的选项有关,但只有 v5 的 python 绑定。
因此,我将 Qwt 版本 5.2.1 与 Python 2.7.2 一起使用。
在 Qwt6 中,建议为 ClipPolygons、FilterPoints、MinimizeMemory、ImageBuffer 适当地设置 Paint Attributes。据我了解,问题在于绘制所有大致映射到相同像素的点,并且油漆一遍又一遍地重新绘制相同的像素,而不仅仅是绘制一次像素。
我尝试设置一些我在绘图曲线上可用的属性,如下所示,但速度没有明显差异。
def addSignals(self, signals):
for signal in signals:
curve = QwtPlotCurve(signal.name())
curve.setPaintAttribute(QwtPlotCurve.PaintFiltered, False)
curve.setPaintAttribute(QwtPlotCurve.ClipPolygons, True)
curve.setData(signal.x(), signal.y())
curve.setRenderHint(QwtPlotItem.RenderAntialiased)
curve.setPen(QPen(Qt.cyan))
curve.attach(self)
self.replot()
通过 setData 加载到 PlotCurve 对象中的数据是来自信号对象的 numpy 数组。并且显示的方法附加到子类 QwtPlot 对象
我是否缺少 Qwt 版本中可用的选项,或者这仅在 v6 中实用?我有哪些加快速度的选择?
谢谢