首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据三角形的值而不是顶点的值,在mayavi中绘制triangular_mesh的彩色图?

如何根据三角形的值而不是顶点的值,在mayavi中绘制triangular_mesh的彩色图?
EN

Stack Overflow用户
提问于 2022-10-07 13:11:37
回答 1查看 28关注 0票数 0

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

命令就像

代码语言:javascript
复制
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函数来实现这一点。详情见这里。但我更喜欢用梅拉维。

EN

回答 1

Stack Overflow用户

发布于 2022-10-08 01:28:19

嗯,我找到了一种方法来设置人脸颜色(每个三角形都是一张脸)。结果如下

剧本是这样的:

代码语言:javascript
复制
# 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()

详细信息在这里中显示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73987684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档