Matlab - 在颜色条上添加特定刻度

Matlab - Add a specific tick on a colorbar

我使用“冲浪”功能和颜色条表示表面。我想保留颜色栏的默认刻度,但在此颜色栏上添加一个自定义刻度,为特定值(例如,我可以将其设为红色以将其与其他刻度区分开来)。关于如何在颜色条上保留现有刻度的情况下添加自定义刻度的任何想法?

谢谢

如评论中,您可以像这样添加一个额外的刻度线

h = colorbar; 
newTick = 0.75;
h.Ticks = sort([h.Ticks newTick]);

如果你想在条上添加一条线,最简单的事情(我认为)是使用相对于图形定位的 annotation(与 colorbar 相同) , 所以我们可以覆盖它

pos = h.Position;
r = (newTick - min(h.Ticks))/(max(h.Ticks)-min(h.Ticks));
annotation( 'line', pos(1)+[0, pos(3)], [1, 1]*(pos(2)+pos(4)*r), ...
            'color', [1,0,0], 'linewidth', 2 );

我正在设置注释的 x 位置以匹配颜色栏的左侧和右侧,并设置 y 位置以匹配底部加上高度的相对百分比到刻度值。

结果:

同样,您可以只使用 annotatation 来获得一个红色标签,将所有内容正确排列起来有点复杂,您必须确保文本框足够宽以在单行并垂直对齐到中间以获得正确的位置:

h = colorbar; 
newTick = 0.75;
pos = h.Position;
r = (newTick - min(h.Ticks))/(max(h.Ticks)-min(h.Ticks));
h = 0.2;
annotation( 'textbox', [pos(1)+pos(3)/2, (pos(2)+pos(4)*r)-(h/2), pos(3)*2, h], ...
    'color', [1,0,0], 'string', ['- ' num2str(newTick)], 'linestyle', 'none', ...
    'VerticalAlignment', 'middle' );