在 mlab.contour3d 中获取连续色图

Get continuous colormap in mlab.contour3d

为什么颜色图离散为 3 种不同的颜色,而我希望它在这里是连续的?

import numpy as np
from mayavi import mlab

cube = np.zeros((100,100,100))
cube[10:90,10:90,10:90] = np.linspace(0,1,80)
mlab.contour3d(cube, colormap="jet", opacity=0.5)

此外,如果不将不透明度设置为低于 1,为什么我的立方体上只有一种颜色?

轮廓是访问等值点的曲线(在 3D 中是表面)。对于数值数据,它将位于网格的点上或通过插值位于它们之间。

立方体的 "outer" 部分全为零,因此在创建轮廓表面的索引 10 和 90 处有一个跳跃。

当网格中的值与等距轮廓值交叉时创建内部边界(默认情况下显然总共有 3 个值)。

最后,由于立方体的外部全部为零,如果没有透明度,您只会看到它,并且值的变化不会暗示颜色的变化。

我在下面给出了一个示例,其中包含更多级别 (9) 并且没有零边界,它给出了水平等高线平面。

import numpy as np
from mayavi import mlab

cube = np.zeros((100,100,100))
cube[:,:,:] = np.linspace(0, 1, np.prod(cube.shape)).reshape(cube.shape).T
mlab.contour3d(cube, colormap="jet", opacity=0.5, contours=9)
mlab.show()

您还可以考虑在 3D 数据中生成 2D 切片的 "cut planes"。这些页面中有示例:http://docs.enthought.com/mayavi/mayavi/mlab_case_studies.html and http://docs.enthought.com/mayavi/mayavi/auto/examples.html