2011-07-16 11 views
4

label2rgbを使用して、ラベルイメージとカスタムカラーマップから作成されたカラーマップイメージの凡例を作成しようとしています。基本的には、カラーマップの小さな長方形のサンプルとカスタムラベルを示す伝説が必要です。Matlab image legend with color blocks

ラベルと背景の色を設定したいと考えています。画像はimshowを使用して表示され、明らかにlegendはそのような図形には影響しません。

colorbarを使用してこれを少しハックしましたが、プロットウィンドウのサイズを変更するとすべてがスローされるため、私はそれにはあまり満足していません。

このタイプの凡例は、Figureウィンドウのサイズが変更されたときに必要に応じて浮動して移動するように、どのようにして行うのが望ましいか教えてください。これが不可能な場合は、カラーバーのラベルテキストをカラーリングするか、カラーバーの境界ボックス(ラベルを含む)にバックグラウンドカラーを与える方法を教えてください。ご覧のように、私が手動で背景の白いボックスを追加していないと、ラベルは見えなくなります。

ありがとうございました。

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

答えて

2

カラーバーのx軸とy軸の色をそれぞれ設定する必要があります。

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

したがって、あなたは文句を言わない白い四角形を配置する必要があります。 get(hcb)をチェックして、変更可能なすべてのプロパティのリストを確認してください。

+1

ありがとうございました。迅速なフォローアップの質問:「凡例」のように、カラーバーをイメージ内のおおよその位置に自動的にドッキングする方法があります。たとえば、 'legend'では' NorthEast'と言うことができ、Figureウィンドウのサイズを変更すると凡例は右上隅にとどまります。上記のコードでは、デフォルトのウィンドウサイズでうまくいくように見えますが、サイズを変更するとカラーバーが動き、特定のウィンドウサイズで画像の外に出ることがあります。ありがとう。 – SSilk

+1

さらに重要なフォローアップの質問: 'print(gcf、 'result.png')、 '-dpng');'コマンドを使ってFigureを印刷すると、カラーバーのテキストが黒に戻ります。この数字を印刷するときにテキストを白くしておく方法を教えてください。ありがとう。 – SSilk

+1

カラーバーには、['eastoutside'](http://www.mathworks.com/help/techdoc/ref/colorbar.html)などの自動プレースメントもあります。印刷に関しては、 '-depsc'のような別のフォーマットで保存できるかどうかを確認することができます。 – Jonas