2017-03-09 17 views
1

私はMatlabのプロットオートメーションルーチンを作成しています。 しかし、私はカラーバーの(水平)サイズを評価する問題を抱えています。 私はカラーバーのサイズを取得するには、以下を使用することができます。Matlabでフルサイズのカラーバーを取得

cb = findall(groot,'Type','colorbar'); % get colorbar 
xwidth = cb.Position(3); 

これは私のカラーバーの横のサイズを与えるが、ラベルを除外し、ラベルをチェックします。

バーとラベルの両方のフルサイズを取得する方法はありますか? R2014b前のMATLABのバージョンでは、事前

+0

どのバージョンのMATLABですか? – Suever

+0

@Suever:2017a prerelease – TheodorBecker

+0

一般に、秘密の性質上、公開前のソフトウェアについて公開フォーラムで質問しないことをお勧めします。つまり、この質問はR2014b以降のMATLABのすべてのバージョンに関係しています。 – Suever

答えて

1

おかげで、あなたは簡単にラベルを含むカラーバーの位置を(得るためにカラーバーのOuterPositionプロパティを使用することができるようにカラーバーが変装して単にaxes目的であったとティックラベル)。しかし、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 
+0

私はすでにやや長めの回避策を予想していましたが、それは私のために働きます、ありがとうございました! – TheodorBecker

関連する問題