How do I plot colors for different mesh elements using trimesh?

26 次查看(过去 30 天)
I have a 2D mesh that I want to plot, and it seems like trimesh() may be the best function for doing so. However, I'm not clear on the capabilities of this function with regard to colors. Is there a way to fill each mesh element with a different color according to some pre-defined array of element colors? Is there any way to make this work with a colorbar?
Thanks.
Edit: To be more specific, my mesh is already stored in the data structure expected by the trimesh() function: A triangle connectivity matrix, and a set of x and y points for the nodes. I have a value stored in a separate vector for each element in the connectivity matrix that I want to be able to plot as a color for that element.
  3 个评论
Garrett West
Garrett West 2023-11-4
移动:Dyuman Joshi 2023-11-4
Thanks for your answer. I edited my question above to be more specific. The "Z" value in my case is not a function of the X and Y points, but rather a precomputed value for each triangular element.
Dyuman Joshi
Dyuman Joshi 2023-11-4
移动:Dyuman Joshi 2023-11-4
In that case -
%Example
%Sample data
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
%Triangulation object
T = delaunay(X,Y);
%trisurf plot
h = trisurf(T, X, Y, Z);
%Values for Color
C = rand([size(Z) 3]);
%Update the color data of the trisurf plot
h.CData = C;

请先登录,再进行评论。

采纳的回答

Garrett West
Garrett West 2023-11-4
I figured it out. I scaled the element values to match up to a chosen colormap (jet) and did a trimesh() one element at a time, specifying the face color of each element. I had to set the Z value to zero to allow me to add a face color and edge color. Then I added a colorbar and scaled it appropriately. Thanks for the suggestions!

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

产品


版本

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by