我可以用 matplotlib 做到这一点我想绘制一个圆环并根据小角度参数改变表面的颜色。更一般地说,当你用 Mayavi 绘制一个表面时,你如何为单个补丁着色?
我可以在 matplotlib 中使用 'facecolors' 参数在绘图时轻松完成此操作,但因为我需要更好的 3D 渲染,我必须使用 Mayavi。
此外,您可以在 Mayavi 中为单个点着色: 在 Mayavi (Python) 中绘制不同颜色的 3D 点 但我还没有找到类似的表面工作。
从文档中,默认情况下,着色是由高程 z 指定的,但我不确定如何根据可以传递给绘图函数的某个数组来更改它以指定它。
有没有办法改变这种依赖关系?
'''
from mayavi import mlab
import numpy as np
mlab.options.offscreen = True
R = 2
r = 1
theta = np.linspace(0, 2 * np.pi, 20)
phi = np.linspace(0, 2 * np.pi, 20)
torus = np.zeros((3,20,20))
for i in range(0,20):
for j in range(0,20):
torus[0][i][j] = (R + r * np.cos(phi[j])) * np.cos(theta[i])
torus[1][i][j] = (R + r * np.cos(phi[j])) * np.sin(theta[i])
torus[2][i][j] = r * np.sin(phi[j])
mlab.mesh(torus[0], torus[1], torus[2])
mlab.show()
'''
我希望结果如下所示: