2016-10-31 9 views
1

低、中、高の3つのティックラベルを含むカラーマップを作成したいとします。ただし、これらのラベルはある範囲の値に対応する必要があります。 Low = 0-50、Intermediate = 50-100、High = 100 - maxvalue。 私がこれまでに書いたコードは以下に書かれていますが、Ticksを定義したいときは間違っています。誰かがティックに範囲を実装する方法を教えてくれますか?カラーマップの値の範囲

ありがとうございます!

figure, imshow(result); 

[maxval] = max(result(:)); 
[minval] = min(result(:)); 

% red, yellow, green 
cmap = [0 1 0; 1 1 0; 1 0 0]; 
colormap(cmap); 
h = colorbar;  
caxis([minval maxval]); 

set(h, 'Ticks',[0:1:50, 50:1:100, 100:1:maxval]) 
set(h,'Ticklabels',{'Low','Intermediate','High'}) 

答えて

1

のではなく、あなたは3つの値のみを持つカラーマップ、あなたはそれが全範囲をカバーするように、あなたのカラーマップの数倍にそれぞれの値を繰り返したいと思うでしょう。

また、あなたは(0:1:50配列 50の値を作成します)多く配列の配列であるためにあなたの目盛りを定義しています。 'Tick'プロパティに使用される配列の各値は、の別個のダニです。

配列を渡す代わりに、をティックの位置として使用することをお勧めします。

このようなものは、あなたが望むものを達成するはずです。

crange = 0:maxval; 
cmap = zeros(numel(crange), 3); 

cmap(:,1) = crange >= 50; 
cmap(:,2) = crange < 100; 

colormap(cmap); 

h = colorbar; 
caxis([0 maxval]); 

set(h, 'Ticks', [25 75 mean([100 maxval])], ... 
     'TickLabels', {'Low', 'Intermediate', 'High'}); 

enter image description here

+0

こんにちは、お返事に感謝。これは私を少し助けます。しかし、私が実際に望むのは、0〜50、黄色50〜100、赤色100〜maxvalの緑色の範囲を持つことです。これを手配してもらえますか? – Ommie

+0

@Ommieが更新されました。 – Suever

+0

これは動作します!どうもありがとう! – Ommie