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

lan*_*ery 6 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')
Run Code Online (Sandbox Code Playgroud)

而是mayavi开始噎住了n >= 10000matplotlib, ( Axes3D.scatter) 中类似的 3d 绘图例程同样难以处理这种大小的数据集(为什么我首先开始研究mayavi)。

首先,在mayavi(琐碎的或非平凡的)中是否有一些我遗漏的东西会使 10,000 多个点散点图更容易渲染?

其次,如果上面的答案是否定的,那么mayavi我还需要哪些其他选项(在python 包中或不同的 python 包中)来绘制这种量级的数据集?

我标记 ParaView 只是为了添加在 ParaView 中渲染我的数据非常顺利,这让我相信我并没有试图做任何不合理的事情。

更新:

将模式指定为 2D 字形对加快速度大有帮助。例如

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

可轻松支持多达 100,000 个点

在此处输入图片说明

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

Ian*_*Ian 5

PyQtGraph是一个性能更高的绘图包,尽管不如 matplotlib 或 mayavi 那么“漂亮”。它是为数字运算而设计的,因此应该可以轻松渲染数万个点。

至于mayavimatplotlib:我认为有了这些点数,您已经达到了这些软件包的可能性。

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