Легенда изображения Matlab с цветными блоками - PullRequest
5 голосов
/ 16 июля 2011

Я пытаюсь создать легенду для цветного изображения, созданного из изображения метки и пользовательской карты цветов, используя label2rgb.В основном я хочу легенду, которая показывает небольшие прямоугольные образцы цветов карты цветов вместе с пользовательскими метками.

Я бы хотел иметь возможность установить цвет меток и фона.Изображение отображается с помощью imshow, и, по-видимому, legend не влияет на такие цифры.

Я попытался немного взломать это, используя colorbar, как показано ниже, но я довольно недоволен этим, так как, если я изменю размер окна графика, все сбрасывается.

Может кто-нибудь сказать мне, как должен создаваться этот тип легенды, желательно таким образом, чтобы он перемещался и перемещался сам по мере необходимости при изменении размера окна рисунка.Если это невозможно, то может ли кто-нибудь сказать мне, как либо раскрасить текст метки цветовой полосы, либо дать ограничивающей рамке цветовой полосы (включая ее метки) цвет фона?Как вы можете видеть, если бы я не добавил фоновое белое поле вручную, ярлыки были бы невидимы.

Спасибо.

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]);

1 Ответ

2 голосов
/ 16 июля 2011

Вы хотите установить цвет осей x и y цветовой шкалы соответственно.

set(hcb,'ycolor','w','xcolor','w')

Таким образом, вам не нужно ставить белый прямоугольник. Отметьте get(hcb), чтобы увидеть список всех свойств, которые вы можете изменить.

...