47

在 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

子图中浪费的空白示例

图上超过 50% 的空间被浪费为“空白” 我想缩小该空白空间,但未能确定这样做的机制。想法?

4

3 回答 3

49

File Exchange 上的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

在此处输入图像描述

于 2011-07-13T21:34:29.450 回答
7

您可以自己(或以编程方式)使用

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

默认情况下,坐标是标准化的。因此,[0.1 0.1 0.5 0.5] 的位置将从左下角的 10% 处开始,宽度等于图形宽度的一半,高度等于图形高度的一半。

有关边距和填充的内置解决方案,请参阅公认的答案。

于 2011-07-13T20:40:25.977 回答
6

尝试减少隐藏轴LooseInsets属性中的默认值,如http://UndocumentedMatlab.com/blog/axes-looseinset-property/中所述

例如:

set(gca, 'LooseInset', get(gca,'TightInset'))
于 2011-07-14T19:16:01.033 回答