如何在Matlab中对齐彩条标签和线条

时间:2015-04-21 12:17:37

标签: matlab plot alignment colorbar

我需要在Matlab中使用离散颜色条绘制一个图。我通过以下方式执行此操作:

data = randi(10, 20);
imagesc(data)
my_colormap = rand(10, 3);
colormap(my_colormap)
cb = colorbar
set(cb,'YTickLabel',{'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';})

现在我的问题是颜色条刻度标签和颜色条中的小线条不能很好地对齐。我怎样才能更好地使用彩条标签和小线条,如下图所示:

enter image description here

1 个答案:

答案 0 :(得分:1)

颜色条上的TickLabel每个对应一个值(一个Tick)。要将TickLabels置于中间,您需要将刻度线放在中间。为了使这个动态(以便在调整图像大小时它不会改变)我有点棘手我记得并且我不记得了。只设置一次滴答并不是那么难,

set(hCbar,'YTicks',RightYTicks);

修改

根据要求,我会发布一个例子。这应该暗示该怎么做。

x = 1:10;
y = 1:10;
cmap = jet(10);

[x, y] = meshgrid(x,y); %x and y grid

c = x-0.1; %Set color code to increase to the right
hFig = figure;
scatter(x(:),y(:),10,c(:),'filled'); % Simpler for the example
set(gca(hFig),'CLim',[0,10]);
colormap(cmap);
hCbar = colorbar;
set(hCbar,'YTicks',0.5:9.5);
set(hCbar,'YTickLabels',{'A','B','C','D','E','F','G','H','I','J'});

对于较新的matlab版本,YTicks可能已将名称更改为TicksYTickLabels可能会被称为TickLabels