How to make a a certain range with different color in colorbar

30 views (last 30 days)
I created a a contour plot and I would like to make the range between -50 and 0 different than the range 0 and 50 as below. Anway to help please
[X,Y] = meshgrid(10:5:80,0:1:20);
Z = f([X(:), Y(:)]);
Z1 = reshape(Z,[21,15]);
figure
contour(X,Y,Z1,15000)
colormap hsv
colorbar
xlabel('\gamma (%)')
ylabel('\lambda (%)')
zlabel('m^{*}_{NPV} ($B)')

Accepted Answer

Sudheer Bhimireddy
Sudheer Bhimireddy on 8 Aug 2020
  8 Comments
Yaser Khojah
Yaser Khojah on 9 Aug 2020
Thanks Sudheer, I want exactly what I have with additional variation between 0 and 50. The range is very small which I’m struggling to present.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 9 Aug 2020
The above function requires that the positions be defined in relative terms, 0 to 1, rather than in absolute terms. You would have to decide ahead of time what your caxis() is going to be, and use proportional positions through that range,
relative_position = (data_x - min_to_map)./(max_to_map - min_to_map)
  8 Comments
Walter Roberson
Walter Roberson on 12 Aug 2020
levels = [-700 -600 -500 -400 -300 -200 -100 -50 -40 -30 -20 -10 0 10 20 30 40 50 100 200 300];
[a,b] = contourf(X, Y, Z1, levels);
This will not in itself create new colormap entries for the various levels, but it will outline them more clearly.
To create new colormap entries, you have to follow the strategy I outlined above, of creating a colormap with replicated slots.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!