web-dev-qa-db-ja.com

matlabのサブプロットの周りの境界線を減らす方法は?

可能性のある複製:
MATLABサブプロットマージン

Matlabでは、サブプロットの周りに大量のスペースが無駄になります。たとえば、この例では:

t = 0:0.001:2*pi+0.001;
figure(2);
for i = 1 : 25;
    subplot(5,5,i);
    plot(t, sin(i*t));
    axis off
end

Example of wasted white space in subplots

図のスペースの50%以上が「空白」として無駄になっています。その空白スペースを縮小したいのですが、そうするためのメカニズムを特定できませんでした。考え?

ありがとうジョン

44
John

ファイル交換の subaxis 関数を使用すると、サブプロットのマージンを指定できます。

使用例:

t = 0:0.001:2*pi+0.001;
figure(2);
for i = 1 : 25;
    subaxis(5,5,i, 'Spacing', 0.03, 'Padding', 0, 'Margin', 0);
    plot(t, sin(i*t));
    axis tight
    axis off
end

enter image description here

48
nibot

あなたは自分で(またはプログラムで)それらを配置することができます

subplot('Position',[left bottom width height]);

デフォルトでは、座標は正規化されています。したがって、[0.1 0.1 0.5 0.5]の位置は、左下隅から10%の位置から始まり、図の幅の半分に等しい幅と、図の高さの半分に等しい高さを持ちます。

マージンとパディングの組み込みソリューションについては、受け入れられている回答をご覧ください。

6
Nicolas Renold

http://UndocumentedMatlab.com/blog/axes-looseinset-property/ で説明されているように、非表示のAxes LooseInsetsプロパティのデフォルト値を減らしてください

例えば:

set(gca, 'LooseInset', get(gca,'TightInset'))
5
Yair Altman