2017-02-06 5 views
1

私は、すべてのピクセルで値を注釈したいピクセルがほとんどない画像プロットを持っています。色は通常のカラーマップ上で変わるので、私は実際にはすべての注釈に対して固定色を持つことはできませんが、色を変えたいと思います。テキストプロットアノテーションに異なる色を使用する

x=1:3; 
y=1:3; 
m(y, x) = x .* y' * 6; 
image(m); 
xi = repmat(x, 3, 1); 
yi = repmat(y', 1, 3); 
text(xi, yi, "label"); 

私はもちろん、私は両方の3Dマトリックスには

clabels = zeros(3, 3, 3); 
clabels(:, :, 2) = 0.75; % for medium green, RGB = [0 192 0]; 

および細胞マトリックス

clabels = {}; 
clabels(y, x) = [0 0.75 0]; 

を試み

text(xi, yi, "label", "color", "white"); 

代わりの"white"を使用して色を設定することができどちらの場合も0を使用は

error: invalid value for color property "color"

はカラープロパティの行列のような値を作成する方法はあります私をもたらしましたか?または、私が注釈を付けたい色ごとにtextを作成する必要がありますか?

+0

これは複数のテキストコマンドを必要とするので質問に答えませんが、とにかく役に立ちます。最初に、ピクセルの明るさに応じてラベルを黒または白にする必要があるかどうかを決定します。 'bw = colormap * [0.299; 0.587; 0.114])> 0.5'黒のラベル 'bl =(bw == 1)'と白の 'wh =(bw == 0)'のブール値マトリックスを作成します。これらのアノテーションは 'text(xi(bl)、yi(bl)、label"、 "color"、 "black") 'とそれに応じて白色に使用します。 – Raketenolli

+0

コメントはもう編集できません。それは 'bl =(bw(m)== 1)'と 'wh =(bw(m)== 0)'でなければなりません。 – Raketenolli

答えて

2

{'Property'}, {values}形式を使用すると、すべてのテキストオブジェクトの色を一度に指定できます。残念ながら、コンストラクタでこれを直接行うことはできませんが、textによって返されたテキストオブジェクトの配列に対して、setを使用してアクションを実行できます。

t = text(xi, yi, 'label'); 

% Create a cell array where each cell is a different RGB color 
colors = arrayfun(@(x)rand(1,3), t, 'UniformOutput', false); 

set(t, {'Color'}, colors) 
関連する問題