如何在 Matlab 中对齐颜色条刻度标签和线条

How to align colorbar tick labels and lines in Matlab

我需要在 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';})

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

colorbar上的TickLabel分别对应一个值(一个Tick)。要将 TickLabels 放在中间,您需要将刻度线放在中间。要使这种动态(以便在调整图像大小时它不会改变)我记得有点棘手,但我真的不记得了。不过,只设置一次刻度并不难,

set(hCbar,'YTicks',RightYTicks);

编辑:

根据要求,我将 post 举个例子。这应该会提示该怎么做。

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 可能已更名为 Ticks 并且 YTickLabels 可能被称为 TickLabels