0

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

[ 0 : 0.3 )=dark blue, [ 0.3 : 0.6 )=blue, [0.6 : 0.9)=green 等等,而不仅仅是整数,但我不能。请注意对我很重要的“[”和“)”。

请帮忙。

PS:渐变效果对我来说并不重要。

这是代码

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)');

这是图:

自定义颜色图

4

1 回答 1

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 个点,我应该通过定义为这些点分配 35 种颜色 map = zeros(35 ,3 )。地图中的数字 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)'); 

这是图: 在此处输入图像描述

我知道分配 35 种颜色很困难,而且可能很愚蠢,但我对 matlab 不熟悉……至少它有效。

于 2013-11-02T17:47:45.560 回答