0

我正在尝试使用 Vispy 创建条形图,因为我倾向于使用 opengl 来处理大量数据。

从 vispy 文档中,我找到了 visuals.Rectangle 类,它为我提供了一个“栏”。不幸的是,这个类只需要一组点,所以我试图在一个循环中创建多个矩形。此时,情节已经在几个矩形处变慢了,100-1000 已经很糟糕了。显然,这是创建将我带到这里的图表的错误方法。如何在不单独添加每个矩形的情况下创建多个矩形?

这是一个片段:

import sys
import numpy as np
from vispy import scene, app

canvas = scene.SceneCanvas(keys='interactive')
canvas.size = 600, 600
canvas.show()

grid = canvas.central_widget.add_grid()
view = grid.add_view(row=0, col=0)
view.camera = scene.PanZoomCamera(rect=(-1,-1,10,10))

for i in range(10):
    rec = scene.visuals.Rectangle(center=(i, i), height=1, width=0.5, color='r')
    view.add(rec)
gl = scene.visuals.GridLines(parent=view.scene)

if __name__ == '__main__' and sys.flags.interactive == 0:
    app.run()
4

1 回答 1

0

正如您所发现的,VisPy 没有内置的条形图(这将是对绘图 API 的一个受欢迎的贡献)。我认为最简单的方法是制作一个包含多个矩形的 MeshVisual。我没有执行此操作的代码,但这将是起点。

一般来说,不建议创建大量的视觉效果,因为它会影响性能。VisPy(和 OpenGL)将依次绘制每个视觉对象,一次一个,并且有很多会真正损害您的每秒帧数和整体性能。

编辑:啊,你可能可以基于 HistogramVisual:https ://github.com/vispy/vispy/blob/master/vispy/visuals/histogram.py

于 2021-01-04T18:47:59.000 回答