Giving step size to colorbar

36 views (last 30 days)
Hi all.
I was wondering whether it is possible to give step size to colorbar while plotting using pcolor(X,Y,C) where (X,Y) are the X, Y axes of the plot and C corresponds to the colorbar variable. I used caxis([1e10 1e12]) to set the limits of my colorbar and the result is as in figure 1.png. However, do notice that the colorbar is covered (mostly) entirely by values between 1e11 and 1e12 with only a small portion between 1e10 and 1e11. I however need something like in figure 2.png where the spacing between 1e10 and 1e11 is the same as 1e11 and 1e12.
Any lead would be highly appreciated.
Thank you.

Accepted Answer

Voss
Voss on 23 Dec 2021
If you had limits from 1 to 100, you would expect about 90% of the colors to be in the 10 to 100 range and about 10% to be in the 1 to 10 range, right? (Actually 90/99 and 9/99, respectively.) That's the same situation as you have here, except that the limits are scaled up by 1e10.
What you are really after is some sort of log-scale colorbar, which as far as I know, there is no built-in support for (maybe on the file exchange you can find something). What you can try is to use log10(C) for your color values and use log10() of your color limits:
pcolor(X,Y,log10(C));
caxis([10 12]);
colorbar();
then manually set the YTickLabels of the colorbar axes to {'10^{10}', '10^{11}', '10^{12}'}. It may be a little tricky to maintain the correct YTickLabels on the colorbar as the data change, but it is feasible.
  1 Comment
Mahith Madhana Kumar
Mahith Madhana Kumar on 24 Dec 2021
Thank you so much for the suggestion. I guess colorbar('XTickLabel', {'10^{10}', '10^{11}', '10^{12}'}, 'XTick',log10(1e10):1:log10(1e12) ); should work based on your answer.
Thanks again.

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 23 Dec 2021
You can make "steps" in your colorbar independently of the caxis. Just specify how many rows in your colormap,
cmap = jet(8); % 8 steps.
colormap(cmap);
colorbar;
or
cmap = jet(32); % 32 steps
colormap(cmap);
colorbar;
  3 Comments
Image Analyst
Image Analyst on 24 Dec 2021
If you're looking to change the number and location the tick marks and their labels in the colorbar, instead of the number of uniform color steps in the colorbar, then you can adapt this example from the help:
contourf(peaks)
colorbar('Ticks',[-5,-2,1,4,7],...
'TickLabels',{'Cold','Cool','Neutral','Warm','Hot'})
Mahith Madhana Kumar
Mahith Madhana Kumar on 25 Dec 2021
Thank you. That is really helpful as well.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!