How to assign to an already 3d surface a colormap based on a set of values ?
11 views (last 30 days)
Show older comments
Marco Artiano
on 16 Oct 2019
Commented: Marco Artiano
on 16 Oct 2019
Hi guys, let imagine that I've already plotted a 3d surface, let be for reason of simplification a semicylinder (so displayed as a function using surf). Now I want to modify every single point/(piece of surface) color of this surface based on a set of value, for example I have computed the temperature point to point on that surface, now I just want to show that variation on the surface, in the sense of colormap. I know that it is possibe doing this with a 2D plot, simply by plotting the matrix of Temperature on a surf(T) and see the plot from the top, but I would like to see that on the geometry.
0 Comments
Accepted Answer
Fabio Freschi
on 16 Oct 2019
Edited: Fabio Freschi
on 16 Oct 2019
Not sure if I have understood correctly. I try. I assume that you have the temperature plot as 2d matrix, as required by surf, because you mentioned it.
% data for the surface
[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
% original temperature
T0 = X; % dummy temperature map
% first plot
figure
% plot with surf, saving the surface object in 's'
s = surf(X,Y,Z,T0);
Then you evaluate a new temperature, for example T1
% new temperature
T1 = Y; % new dummy temperature map
Now you can change the temperaure map by accessing the CData field in s
s.CData = T1;
More Answers (1)
Bjorn Gustavsson
on 16 Oct 2019
Edited: Bjorn Gustavsson
on 16 Oct 2019
This is how I'd do this:
surf(x,y,z,Temps),shading flat
This you dont have to view from above.
HTH
0 Comments
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!