自定义颜色贴图,具有matlab中颜色的浮点范围

时间:2013-10-26 17:35:59

标签: matlab colorbar

我已定义了自定义的colormap,然后使用它colorbar,如图所示。 caxis的最小值和最大值设置为0和16,但问题是我想在颜色条中有浮点,例如

[ 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

1 个答案:

答案 0 :(得分:0)

我找到了答案......解决方案就在这里......我想要一个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 ......至少它有效。