How to plot colorbar as seperate image?

15 views (last 30 days)
Hi, I would like to plot the colorbar of an image not next to my image, but in a seperate figur window. Therefore the colorbar should even be plotted in the size of an image.
I am looking for something like this:
imshow(example_img,[min_val max_val]); %show the image, but without colorbar
%do something to prevent showing the colorbar in figure(1)
colorbar_img=get_colorbar_img(h) %do something to get an image that shows the %colorbar and has the same size as example_img
thanks for you help!

Accepted Answer

TADA on 4 Feb 2020
Edited: TADA on 4 Feb 2020
I assume your image is grayscale, right?
If I understand you correctly:
imshow(example_img, [min_val, max_val]);
% setting the color map of the image to whatever we want
% I chose parula here but you can use whatever colormap
set(gca, 'colormap', parula);
% this generates a single column colorbar the same height as your image
% mapping colors to your image values between the calculated minimum and maximum
% because you wanted it as an image i translated it back to uint8
colorColumn = uint8(linspace(double(min_val), double(max_val), size(example_img, 1))');
% this will stretch the color-bar to the same width as your image
colorBarIm = repmat(colorColumn, 1, size(example_img, 2));
% this will display the color bar image on a second figure
% flip the axis view point because images are shown from top to bottom
% but colorbars are displayed bottom-up
view(180, 90);
% setting the color map of the colorbar image to match the one
% we set for the actual image
set(gca, 'colormap', parula);
% You probably also want to show the values corresponding to the colormap
axis on;
% remove the x tick marks because they are usually meaningless ona colorbar
  1 Comment
David Weller
David Weller on 5 Feb 2020
Wow, thanks a lot for helping me out so fast :)

Sign in to comment.

More Answers (0)


Community Treasure Hunt

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

Start Hunting!

Translated by