就性能而言,当我在 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')
但是当
n >= 10000
时,mayavi
开始变得不稳定。同样地,在数据集达到此规模时,在 matplotlib
中进行三维绘图(Axes3D.scatter
)也会遇到类似困难(这就是我首先研究 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个点。
如果有人能添加一些关于如何加速渲染3D字形的信息,那就太好了。