Colorbar doesn't show colours the right way round?

Hello Community,
I have been bar plotting some data, and have graduated the colours relative to their values in the data which works fine. The issue I am having is that when I call the colorbar - the colours dont match the plotted colour scheme of the data. Following an answer from Image Analyst, I write the graduated bar plot like this:
numberofbars = length(var1);
barColorMap = colormap(summer);
x = 1 : numberofbars;
for b = 1 : numberofbars
% Plot one single bar as a separate bar series.
handleToThisBarSeries(b) = bar(x(b), var1(b));
% Apply the color to this bar series.
set(handleToThisBarSeries(b), 'FaceColor', barColorMap(b,:));
hold on;
end
colorbar
and get this as the output:
which for the bar plot is what I want, but the colorbar colours are inverted to the data. I have tried this to invert the colorbar scheme (following Walter Roberson advice):
oldcmap = colorbar;
colorbar( flipud(oldcmap) );
but unfortunately this doens't sort the colorbar issue in my case.
Does anyone have any advice on how to resolve this please?
Many thanks,
10B.

1 Comment

Ah - of course I have also noticed that the colorbar index is not to the correct scale.
Again, any pointers welcome!

Sign in to comment.

Answers (2)

J Philps
J Philps on 31 May 2017
Edited: J Philps on 31 May 2017
Walter was on the right track with his suggestion, but I believe you want to flip the colormap of the colorbar. Here is code demonstrating how you can flip the colormap of the colorbar graphical object:
figure
surf(peaks)
c1 = colorbar;
figure
surf(peaks)
c2 = colorbar;
cmap = colormap;
upside_down_cmap = flipud(cmap);
colormap(c2, upside_down_cmap);
The problem is your chosen color, barColorMap(b,:), should not use b, the loop index, as an index. It should use an index that is chosen according to the height of the bar.

Products

Asked:

10B
on 25 May 2017

Answered:

on 31 May 2017

Community Treasure Hunt

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

Start Hunting!