2013-10-26 99 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 ...至少它的工作原理。