2016-10-31 124 views
1

我想製作包含三個標籤的顏色映射:低,中等和高。但是,這些標籤應該對應一系列值。低= 0-50,中級= 50-100,高= 100 - 最大值。 我到目前爲止編寫的代碼是在下面寫的,但是當我想要定義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

而不是你的顏色表只能有三個值,你要在你的顏色表多次重複每個值,使其覆蓋整個範圍。

此外,您已經定義了蜱是許多數組的數組(0:1:50創建陣列 50的值)。用於'Tick'屬性的陣列中的每個值都是單獨的記號

不是傳入數組,而是想要取每個範圍的均值,並使用作爲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

This Works!非常感謝! – Ommie