2016-08-15 168 views
3

从性能角度看,在绘制mayavi时,以下代码段对我来说工作得非常好。Python中10,000+点3D散点图(带快速渲染)

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开始一次呛。 matplotlibAxes3D.scatter)中的类似3d绘图程序类似地与这种尺寸的数据集挣扎(为什么我首先开始考虑mayavi)。

首先,mayavi(微不足道的或不平凡的)中有一些东西我错过了,它会使10,000多个点的散点图更易于渲染?其次,如果上面的答案是否定的,还有什么其他选项(在mayavi或不同的python包中)是否必须绘制这个数量级的数据集?

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

更新:

指定模式为2D字形变向加速的事情了很长的路要走。例如。

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

可轻松支持多达100,000点

enter image description here

它仍然是不错的,如果任何人都可以添加关于如何加快3D字形的渲染一些信息。

回答

2

PyQtGraph是一个更高性能的绘图软件包,虽然不如matplotlib或mayavi“美丽”。它用于数字处理,因此应该轻松呈现大约一万个点。

至于mayavimatplotlib:我认为你已经达到了这些包的可能数量。

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

+0

感谢您复苏这个问题!虽然VisPy看起来似乎是一个非常强大的可视化软件包,但乍一看它的API比我以前用于python软件包的复杂,而且它似乎特别适合动态绘图/渲染。无论如何,我会在接下来的日子里看看它是否适合我的目的,谢谢! – lanery