从我在 VisPy 库中看到的所有示例代码/演示中,我只看到人们绘制多行的一种方式,例如:
for i in range(N):
pos = pos.copy()
pos[:, 1] = np.random.normal(scale=5, loc=(i+1)*30, size=N)
line = scene.visuals.Line(pos=pos, color=color, parent=canvas.scene)
lines.append(line)
canvas.show()
我的问题是我有很多线要绘制(每条线几十万点)。Matplotlib 太慢了,因为绘制的点总数为数百万,因此我切换到了 VisPy。但是,当您绘制数千条线时,VisPy 会更慢,每条线都有数千个点(当您有数百万个点时会加快速度)。
根本原因在于画线的方式。当您创建一个绘图小部件然后绘制一条线时,每条线都会呈现到画布上。在 matplotlib 中,您可以明确声明在内存中绘制所有线条之前不显示画布,但在 VisPy 中似乎没有相同的功能,使其无用。
有没有办法解决?我需要绘制多条线,以便我可以交互地更改属性,因此将所有数据点展平到一个绘图调用中是行不通的。
(我正在使用 PyQt4 将绘图嵌入到 GUI 中。我也考虑过 pyqtgraph。)