在 R2014b 之前的 MATLAB 版本中,颜色条只是一个axes
伪装的对象,这样你就可以轻松地使用OuterPosition
颜色条的属性来获取颜色条的位置(包括标签和刻度标签)。然而,在 R2014b 中,颜色条是它自己的图形对象,并且底层轴不再可访问。
一种可能的解决方法是创建一个不可见的axes
颜色条顶部的对象(具有相同的刻度线和标签)并获取OuterPosition
of that.
function pos = getColorbarPosition(cb)
tmp = axes('Position', cb.Position, 'YAxisLocation', 'right', ...
'YLim', cb.Limits, 'FontSize', cb.FontSize, 'Units', cb.Units, ...
'FontWeight', cb.FontWeight, 'Visible', 'off', ...
'FontName', cb.FontName, 'YTick', cb.Ticks, ...
'YTickLabels', cb.TickLabels, 'XTick', []);
if ~isempty(cb.Label)
ylabel(tmp, cb.Label.String, 'FontSize', cb.Label.FontSize, ...
'FontWeight', cb.Label.FontWeight, 'FontWeight', cb.Label.FontWeight)
end
pos = get(tmp, 'OuterPosition');
delete(tmp);
end