如何在Matlab中绘制具有特定值范围的colorbar

时间:2015-05-12 19:24:49

标签: matrix plot colorbar

我有彩色线条,我想绘制具有特定值的那些线条的颜色条。线条按RGB值着色。现在我想将colorbar的值更改为另一个值范围。我的意思是,我只需要将colorbar中显示的值的范围更改为另一个范围。在这个Link中,有我的原始颜色条输出,我想将颜色条的值更改为另一个值范围,如This。 这是我写的代码,它一直显示我的原始范围而不是我的定义范围

hold on
for k = 1:Num_Line_SIFTS
 plot3([SIFT_1((k,1),SIFT_2((k,1)],[SIFT_1((k,2),SIFT_2((k,2)],[SIFT_1((k,3),SIFT_2((k,3)],...
       'o-','Color',[RGB_0_1(k,1) RGB_0_1(k,2) RGB_0_1(k,3)],'MarkerFaceColor',[RGB_0_1(k,1) RGB_0_1(k,2) RGB_0_1(k,3)],'MarkerEdgeColor',...
       'k', 'LineWidth',2)
end

h = colorbar;
set(h,'xlim', [ min(min(Uncertainty_Distances_between_SIFTs))  max(max(Uncertainty_Distances_between_SIFTs))])

hold off

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

查看'Ytick'和'YtickLabel'。第一个用于定义要显示刻度线的颜色条(您所说的原始范围)的点(值)。在你的图中,这些点/值是10,20,30 ... 60。另一方面,'YtickLabel'属性定义将在Ytick位置显示的内容(如果我理解正确,您提到的定义范围)。 因此,您可以创建一个颜色条,获取它的句柄:

h = colorbar;

然后: a)确定要在颜色栏中“勾选”多少个值(在此示例中为原始六个):

set(h,'Ytick',linspace(10,60,6));

b)确定每个'ticks'中显示的值

set(h,'Yticklabel', linspace(min(min(Uncertainty_Distances_between_SIFTs)),  max(max(Uncertainty_Distances_between_SIFTs)),6));

您还可以将完全任意的值显示为ticklabels,甚至是文本:

set(h,'Yticklabel',{'a','b','c'});

如果提供的ticklabel值小于定义的ticks,则ticklabels将循环。