以下代码删除了MATLAB中许多子图周围的填充。我在这里的评论中找到了它。
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
我不知道他其余的代码在做什么。但是,大量的代码可以完成这项工作(认为不是很准确)。
现在,我的问题是在显示时我不希望删除填充,因为它变得丑陋。我只想在使用Commandprint
或进行保存时删除填充saveas
。有什么办法吗?
我给你快速解决。它可以工作,但不是很优雅:
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')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句