色彩映射的值范围

时间:2016-10-31 14:19:35

标签: matlab range colormap

我想制作一个包含三个刻度标签的色彩图:低,中等和高。但是,这些标签应对应于一系列值。低= 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)

您可以多次重复色图中的每个值,使其覆盖整个范围,而不是仅使用三个值进行色彩映射。

此外,您已将刻度定义为多个数组的数组(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