我正在爲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