我用的是mayavi和Python。假设我有一个三维曲面网格的数据集:顶点X, Y, Z的位置,以及由节点数组成的三角形T (维数:e* 3)。该网格具有N个顶点和E三角形。我可以像下面这样绘制网格

命令就像
from mayavi import mlab as ML
ML.triangular_mesh(X, Y, Z, T, scalars=Z, opacity=0.9)
### ... other commands
ML.show()从命令和上面的绘图可以看出,颜色映射是基于顶点的z值的。这是scalars=Z的结果。
现在,我不想做一个基于顶点的彩色地图。假设我有一个存储E*1值的数组。每个值对应于每个三角形的一种属性。我想要基于与三角形属性相关的一维数组生成颜色图。我怎样才能做到这一点?
我知道matlab可以通过使用patch函数来实现这一点。详情见这里。但我更喜欢用梅拉维。
发布于 2022-10-08 01:28:19
嗯,我找到了一种方法来设置人脸颜色(每个三角形都是一张脸)。结果如下

剧本是这样的:
# These are the scalar values for each triangle
f = np.mean(t[np.array(triangles)], axis=1)
# Plot it
mesh = mlab.triangular_mesh(x, y, z, triangles, representation='wireframe', opacity=0)
mesh.mlab_source.dataset.cell_data.scalars = f
mesh.mlab_source.dataset.cell_data.scalars.name = 'Cell data'
mesh.mlab_source.update()
mesh.parent.update()
mesh2 = mlab.pipeline.set_active_attribute(mesh, cell_scalars='Cell data')
s2 = mlab.pipeline.surface(mesh2)
mlab.show()详细信息在这里中显示
https://stackoverflow.com/questions/73987684
复制相似问题