Python中的10,000+点3D散点图(带快速渲染)

时间:2016-08-15 19:49:23

标签: python matplotlib mayavi paraview

在性能方面,以下代码段在mayavi中绘图时对我来说非常合适。

import numpy as np
from mayavi import mlab

n = 5000
x = np.random.rand(n)
y = np.random.rand(n)
z = np.random.rand(n)
s = np.sin(x)**2 + np.cos(y)

mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02, scale_mode='none')

但是mayavi开始窒息n >= 10000matplotlib,(Axes3D.scatter)中类似的3d绘图例程同样与这个大小的数据集斗争(为什么我开始研究mayavi)。

首先,我遗漏的mayavi(平凡或不平凡)中有什么东西可以使10,000点的散点图更容易渲染吗?

其次,如果上面的答案是否定的,那么还有哪些其他选项(在mayavi或不同的python包中)我必须绘制如此大小的数据集?

我标记了ParaView只是为了添加渲染,我在ParaView中的数据变得非常流畅,让我相信我不会做任何不合理的事情。

更新

将模式指定为2D字形对于加快速度有很大帮助。 E.g。

mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02,
              scale_mode='none', mode='2dcross')

可轻松支持高达100,000点

enter image description here

如果有人能够添加一些关于如何加速3D字形渲染的信息,那仍然会很好。

1 个答案:

答案 0 :(得分:2)

PyQtGraph是一个性能更高的绘图包,虽然不是"漂亮"如matplotlib或mayavi。它用于数字运算,因此应该可以轻松地渲染数万个点。

关于mayavimatplotlib:我认为,通过这些数量,您可以达到这些数据包的可能性。

编辑:VisPy似乎是PyQtGraph和其他一些可视化软件包的继承者。可能有点矫枉过正,但它可以通过将计算卸载到GPU来轻松显示几十万个点。