我在自定义曲面图(trisurf 或 trimesh)的颜色时遇到问题。
我希望每个面都有一种颜色,具体取决于相对应变值(针对网格的每个三角形计算)。我在想类似的事情:
p = patch('Faces',faces,'Vertices',verts,'FaceColor',strain);
但FaceColor
似乎不适用于数组。
应变是一个数组,Nx1
其中N
是面数。
我在自定义曲面图(trisurf 或 trimesh)的颜色时遇到问题。
我希望每个面都有一种颜色,具体取决于相对应变值(针对网格的每个三角形计算)。我在想类似的事情:
p = patch('Faces',faces,'Vertices',verts,'FaceColor',strain);
但FaceColor
似乎不适用于数组。
应变是一个数组,Nx1
其中N
是面数。
首先,您需要更改FaceColor
为'flat'
以启用从颜色数据数组中读取颜色 -CData
属性:
试试这个(虽然没有测试):
p = patch( ...
'Faces', faces, ...
'Vertices', verts, ...
'FaceColor', 'flat', ...
'CData', strain' ...
);
在这里,我将CData
属性设置为strain
向量的转置。然后,MATLAB 应自动将此向量中的 N 个应变值映射到所选颜色图(线性)。有关更多信息,请参阅属性CDataMapping
:
文档:
http://www.mathworks.se/help/matlab/ref/patch_props.html#FaceColor http://www.mathworks.se/help/matlab/ref/patch_props.html#CData http://www.mathworks。 se/help/matlab/ref/patch_props.html#CDataMapping