2013-10-26 130 views
0

我已經定義了一個自定義的colormap,然後使用它的colorbar,如圖所示。的caxis的最小值和最大值設置爲0和16,但問題是,我想有浮點彩條,例如用matlab中的顏色浮點範圍定製的顏色映射圖

[ 0 : 0.3)=dark blue, [ 0.3 : 0.6)=blue, [0.6 : 0.9)=green 等等,而不僅僅是整數,但我不能。請注意對我來說重要的「[」和「)」。

請大家幫忙。

P.S:漸變效果對我來說並不重要。

這裏是代碼

caxis([0 16]); 
map = zeros(16 , 3); 
map(1:1,:) = [0, 0 ,143]./255; 
map(2:2,:) = [0, 0 ,239]./255; 
map(3:3,:) = [0, 175 ,255]./255; 
map(4:4,:) = [16, 255 ,239]./255; 
map(5:5,:) = [112, 255 ,143]./255; 
map(6:10,:) = [207, 255 ,48 ; 207, 255 ,48;207, 255 ,48;207, 255 ,48;207, 255 ,48]./255; 
map(11:12,:) = [255, 207 ,0 ; 255, 207 ,0 ]./255; 
map(13:16,:) = [255, 16 ,0 ; 255, 16 ,0;255, 16 ,0;255, 16 ,0]./255; 
colormap(map); 
set(get(colorbar('peer',gca),'ylabel'),'String','BGA PC(RFU)'); 

這裏是圖:

customized colormap

+0

您的意思是簡單地更改colorbar y軸標籤,或設置映射到這些顏色的數字的間隔? –

+0

@LuisMendo:設置映射到顏色的數字的間隔(其中包含浮動品脫數字),我認爲在這之後,y軸標籤將被更改...請幫助:(..謝謝。 – Parid0kht

回答

0

我發現我的答案......解決辦法是here..I想有個顏色0到16之間的柱,步長0.3在0和2之間,步長0.5在2和16之間。示例在這裏:

[0 0.3 0.6 0.9 ... 1.8 2.3 ... 2.8 15.8]

所以此我定義矩陣範圍,如下所示:矩陣範圍

range1 = (0:0.3:2); 
range2 = (2.3 : 0.5 : 16); 
range = [range1,range2]'; 

大小是(35,1),這樣就是35點,我應該通過定義map = zeros(35 ,3)分配35個顏色到這些點。地圖中的第3號是RGB。之後,我已經指定的顏色,如下圖點(這裏只是其中兩個爲例)

map(1,:) = [2, 2 ,51]./255; 
map(2,:) = [3, 3 ,88]./255; 

,這裏是這樣做的完整代碼:

contourf(points,depths,FRU01102013); 
set(gca, 'XTick', points(1) : points(3), 'XTickLabel',{'LSB1','LSB2-1_BLOOM','LSB2'}); 
ylabel('Depth(m)'); 
xlabel('Points'); 
title('Date: 03.10.2013'); 
caxis([0 15.8]); 
%------------------------ 
map = zeros(35 , 3); 
map(1,:) = [2, 2 ,51]./255; 
map(2,:) = [3, 3 ,88]./255; 
. 
. 
. 
map(35,:) = [82,3,3]./255; 

colormap(map); 

%---- 

range1 = (0:0.3:2); 
range2 = (2.3 : 0.5 : 16); 
range = [range1,range2]'; 

cbh = colorbar('peer',gca); 
set(cbh,'ytick',range); 
set(get(cbh, 'ylabel') ,'String','BGA PC(RFU)'); 

這裏是圖: enter image description here

我知道分配35種顏色很困難,也許愚蠢,但我不熟悉matlab ...至少它的工作原理。