MATLAB Answers

Use distinct colormaps for two different surf plots on the same figure

109 views (last 30 days)
Leo Simon
Leo Simon on 11 Nov 2017
Commented: Leo Simon on 11 Nov 2017
Using R2016b, I would like to create two surf plots and use a different colormap for each one. It appears that the only way to assign a color map is to apply it to the axis handle. In the code below I was hoping that AxOne and AxTwo would be different objects, but alas, they appear to be the same thing. Hence when I change the colormap for AxTwo, it changes the colormap for both plots. Is there a way to set the colormap for the first surf to be 'cool' and for the second one to be 'hot'?
hold on;
[x,y,z] = peaks;
h1 = surf(x,y,z)
view(3)
AxOne = get(h1,'Parent');
colormap(AxOne,'cool');
h2 = surf(y,x,3+z)
AxTwo = get(h2,'Parent');
colormap(AxTwo,'hot');

Accepted Answer

Walter Roberson
Walter Roberson on 11 Nov 2017
No, only container objects can hold colormaps, not individual graphics objects. User-created hggroup cannot hold them either.
You have two choices:
  1. use two axes, probably set to the same position, such as you might for plotyy or the newer yyaxis; or
  2. draw the first item with appropriate colormap, then use a tool such as the File Exchange freezeColors() to convert the item to RGB; once it is RGB, you can put up the second item and change colormaps, as the first item will no longer be using a colormap.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!