使用子图保存图形而不填充白边距

时间:2015-08-13 05:30:25

标签: matlab matlab-figure

以下代码删除了MATLAB中一堆子图的填充。我在here的评论中找到了它。

x = -pi:.1:pi;
h=figure;
subplot(2,1,1)
plot(x,sin(x))
subplot(2,1,2)
plot(x,cos(x))

a = findall(h,'type','axes');
for i=1:length(a)
    ti = get(a(i),'TightInset');
    op = get(a(i),'OuterPosition');
    set(a(i),'Position',[op(1)+ti(1) op(2)+ti(2) op(3)-ti(3)-ti(1) op(4)-ti(4)-ti(2)]);
end

我不知道他的其余代码在做什么。但是,这么多代码完成了这项工作(认为不太准确)。

现在,我的问题是我不会在显示时删除填充,因为它变得很难看。我只想在使用命令printsaveas保存时删除填充。有没有办法呢?

1 个答案:

答案 0 :(得分:0)

我会给你快速修复。它有效,但不是很优雅:

x = -pi:.1:pi;
h1 = figure;
subplot(2,1,1)
plot(x,sin(x))
subplot(2,1,2)
plot(x,cos(x))

%% Save figure

x = -pi:.1:pi;
h2 = figure('visible','off');
subplot(2,1,1)
plot(x,sin(x))
subplot(2,1,2)
plot(x,cos(x))

a = findall(h2,'type','axes');
for i=1:length(a)
    ti = get(a(i),'TightInset');
    op = get(a(i),'OuterPosition');
    set(a(i),'Position',[op(1)+ti(1) op(2)+ti(2) op(3)-ti(3)-ti(1) op(4)-ti(4)-ti(2)]);
end
saveas(h2,'newout','fig')