【问题标题】:How to align colorbar tick labels and lines in Matlab如何在 Matlab 中对齐颜色条刻度标签和线条
【发布时间】:2015-04-21 12:17:36
【问题描述】:

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

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

【问题讨论】:

    标签: matlab plot alignment colorbar


    【解决方案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 可能已将名称更改为 Ticks 并且 YTickLabels 可能称为 TickLabels

    【讨论】:

    • 谢谢你的帮助,我可以问一下,hCb 和 RightYTicks 是什么?我对 Matlab 还不是很精通 x) 我猜 hCb 在我的代码中是 cb? RightYTicks 是值向量吗?说...RightYTicks = 1:10?你能给我一个MWE吗? :)
    • @jjepsuomi 抱歉,hCb 是颜色条的句柄,RightYTicks 是正确的 YTicks。例如,对于颜色栏中的 7 种颜色,您希望刻度为 0.5:1:6.5。
    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2022-01-28
    • 2016-06-14
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多