使用粘性矩形创建条形图



我试图使用Vispy创建一个条形图,因为我倾向于使用opengl,因为数据集很大。

我从那些黏糊糊的医生那里找到了视觉效果。矩形类,它为我提供了一个"矩形"类;条";。不幸的是,这个类只需要一组点,所以我试图在一个循环中创建多个矩形。在这一点上,情节已经在几个矩形上放缓,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()

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

一般来说,不建议创建大量的视觉效果,因为这会影响性能。VisPy(和OpenGL(会一次一个地连续绘制每一个视觉效果,如果绘制得太多,确实会影响每秒帧数和整体性能。

编辑:啊,你可能会把它建立在直方图的基础上。视觉:https://github.com/vispy/vispy/blob/master/vispy/visuals/histogram.py

最新更新