以下代码删除了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
我不知道他的其余代码在做什么。但是,这么多代码完成了这项工作(认为不太准确)。
现在,我的问题是我不会在显示时删除填充,因为它变得很难看。我只想在使用命令print
或saveas
保存时删除填充。有没有办法呢?
答案 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')