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

13 views (last 30 days)
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 Comments
Garrett West
Garrett West on 4 Nov 2023
Moved: Dyuman Joshi on 4 Nov 2023
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 on 4 Nov 2023
Moved: Dyuman Joshi on 4 Nov 2023
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;

Sign in to comment.

Accepted Answer

Garrett West
Garrett West on 4 Nov 2023
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!

More Answers (0)

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!