我在'jet'色彩映射中有一些要点。这些点的系数可以从0到1,但通常它们不会涵盖所有范围,例如0.75-0.9。
当我绘制这些点时,我对它们进行着色,因此0.75是色彩图中较小的颜色,0.9是色彩图中的最大颜色,因此显示了所有的色彩图。我想要做的是在颜色栏中也显示出来。当我绘制颜色条时,它上面的标签变为64,但我希望它们从0.75到0.9。我怎么能这样做?
修改
我不认为代码本身有很多帮助,但在这里,以防万一。在colors
变量中,我将ZNCC
转换为色彩映射的范围。
EDIT2
我找到了caxis
不适合我的原因。这是代码:
%this is why it doesnt work
im=imread('someimageyouwanttotest_inRGB.png')
imshow(im)
points=[1, 2;1 , 2 ;0.3,0.7]
ZNCC=points(3,:)
cmap=colormap('jet');
colors=cmap(round( ((1-min(ZNCC))+ZNCC-1).*(size(cmap,1)-1)/max((1-min(ZNCC))+ZNCC-1))+1,: );
hold on
for i=1:length(ZNCC)
plot(points(1,i),points(2,i),'.','Color',colors(i,:));
end
colorbar()
hold off
答案 0 :(得分:1)
我认为这是您的代码正确显示所有颜色然后只是在没有图像的情况下首先设置颜色条:
points=[1, 2;1 , 2 ;0.3,0.7]
ZNCC=points(3,:)
cmap=colormap('jet');
caxis([min(ZNCC) max(ZNCC)]);
colorbar();
hold on
%this is why it doesnt work
im=imread('someimageyouwanttotest_inRGB.png')
imshow(im)
colors=cmap(round( ((1-min(ZNCC))+ZNCC-1).*(size(cmap,1)-1)/max((1-min(ZNCC))+ZNCC-1))+1,: );
for i=1:length(ZNCC)
plot(points(1,i),points(2,i),'.','Color',colors(i,:));
end
hold off
我无法测试它,因为我没有imshow
:/
答案 1 :(得分:1)
如果caxis
不适合你,你可以存储colorbar
的回报 - 它是colorbar对象的句柄。然后,您可以设置其属性,例如'YTick'
和'YLim'
。您可以设置的完整属性列表与Axes Properties相同(因为颜色栏毕竟只是一个轴对象)。
以下是一个例子:
% Generate some random data
z = rand(10);
[x, y] = meshgrid(1:size(z, 1));
% Plot colour map
pcolor(x, y, z);
shading interp; % Comment out to disable colour interpolation
colormap jet;
% Setup colorbar
c = colorbar();
set(c, 'YTick', [0.75 0.875 1]); % In this example, just use three ticks for illustation
ylim(c, [0.75 1]);
完成绘图后,只需要执行一次。
编辑:如果您需要自动从数据中获取限额和标记,那么您可以执行类似
的操作% Find the limits
lims = [min(z(:)) max(z(:))];
% Function for rounding to specified decimal places
dprnd = @(x, dps)round(x*(10.^dps))./(10.^dps);
% Generate ticks
nTicks = 5;
nDps = 2;
ticks = dprnd(linspace(lims(1), lims(2), nTicks), nDps);
set(c, 'YTick', ticks);