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