我正在为Matlab编写一个绘图自动化例程。 但是,我有问题需要评估颜色条的(水平)大小。 我可以使用以下方法来获得彩条的大小:在Matlab中获取完整大小的颜色条
cb = findall(groot,'Type','colorbar'); % get colorbar
xwidth = cb.Position(3);
这会给我的彩条的水平尺寸,但不包括标签和刻度标记。
你有一个想法如何获得酒吧和标签的全尺寸?
在此先感谢
我正在为Matlab编写一个绘图自动化例程。 但是,我有问题需要评估颜色条的(水平)大小。 我可以使用以下方法来获得彩条的大小:在Matlab中获取完整大小的颜色条
cb = findall(groot,'Type','colorbar'); % get colorbar
xwidth = cb.Position(3);
这会给我的彩条的水平尺寸,但不包括标签和刻度标记。
你有一个想法如何获得酒吧和标签的全尺寸?
在此先感谢
在之前R2014b MATLAB的版本中,彩条只是变相的axes
对象,所以你可以很方便地使用颜色条的OuterPosition
属性来获取颜色条的位置(包括标签和勾号标签)。但是,在R2014b中,颜色条是它自己的图形对象,底层轴不再可用。
一个可能的解决办法是建立在彩条的顶部的隐形axes
对象(即具有相同的刻度线和标签),并获得的OuterPosition
是。
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
我已经预料了一个有点冗长的解决方法,但这对我很有帮助,非常感谢! – TheodorBecker
什么版本的MATLAB? – Suever
@Suever:2017a预发布 – TheodorBecker
一般而言,最好不要在公开论坛上提出有关保密性质的预发布软件问题。话虽如此,这个问题适用于R2014b之后的所有MATLAB版本。 – Suever