I'm trying to make a legend for a colormapped image that's been made from a label image and custom color map using label2rgb
. Basically I want a legend that shows small rectangular samples of the colormap colors along with custom labels.
I would like to be able to set the color of the labels and the background. The image is displayed using imshow, and apparently legend
has no effect on such figures.
I've tried a little hack around this using colorbar
as shown below, but I'm pretty unsatisfied with it since if I resize the plot window everything gets thrown off.
Can anyone tell me how this type of legend should be made, preferably in a way so it floats and moves itself as necessary when the figure window is resized. If this is not possible, then can someone tell me how to either color the label text of a colorbar or give the colorbar's bounding box (encompassing its labels) a background color? As you can see, if I hadn't manually added a background white box, the labels would be invisible.
Thanks.
label_image = zeros(768, 1024);
label_image(100:400, 500:600)=1;
label_image(500:600, 100:600)=2;
label_image(25:300, 100:400)=3;
custom_colormap = [ 0 1 0; 1 0 0; 0 0 1;];
label_image = label2rgb(label_image, custom_colormap, [0 0 0]);
% Make a white backround for the colorbar.
% Don't want to have to do this line.
label_image(25:140, 775:1010,:)=255;
% Show the image
imshow(label_image, 'InitialMagnification', 50);
% Here, I would like to be able to set colorbar label text color and/ or
% colorbar bounding box background color, or better yet, use some variant
% on the legend function to do this automatically
colormap(custom_colormap);
labels={'Both', 'Always Moving', 'Moved'};
hcb=colorbar('peer',gca,...
[0.7 0.8 0.03 0.1],...
'YTickLabel',labels,...
'XAxisLocation','bottom',...
'TickLength',[0 0],...
'Color',[1 0 1]);
You want to set the color of the x and y axes of the colorbar, respectively.
set(hcb,'ycolor','w','xcolor','w')
Thus, you wont have to put the white rectangle. Check get(hcb)
to see a list of all the properties you can modify.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With