MATLAB图的PDF附近的紧定边框

问题描述 投票:5回答:2

在MATLAB中创建一个简单的图形并将其保存为PDF时,生成的PDF文件将具有一个豪华的边界框。

plot(1,1,'x')
print(gcf, '-dpdf', 'test.pdf');

(从输出的比例来看,它们似乎总是放在A页面上。)

是否有一种简单的方法可以围绕PDF获得紧密的边界框?

matlab pdf figure bounding-box
2个回答
3
投票

您可以按如下方式格式化边界框

figure(1)
hold on;
plot(1,1,'x')

ps = get(gcf, 'Position');
ratio = (ps(4)-ps(2)) / (ps(3)-ps(1))
paperWidth = 10;
paperHeight = paperWidth*ratio;


set(gcf, 'paperunits', 'centimeters');
set(gcf, 'papersize', [paperWidth paperHeight]);
set(gcf, 'PaperPosition', [0    0   paperWidth paperHeight]);


print(gcf, '-dpdf', 'test2.pdf');

对于较小的边框,您可以调整paperposition属性,例如

set(gcf, 'PaperPosition', [-0.5   -0.5   paperWidth+0.5 paperHeight+0.5]);

1
投票

一个老问题,但我会回答,因为谷歌在Mathworks自己的帮助页面之前找到了这个(抱歉没有足够的声誉可以发表评论到之前)。无论如何

ratio = (ps(4)-ps(2)) / (ps(3)-ps(1))

应该

ratio = ps(4)/ps(3);

作为第一个值gcf.Position是屏幕上的[x,y]位置,与大小无关。

Matlab(R)也给出了答案,特别是如果你不想/需要调整数字:https://se.mathworks.com/help/matlab/creating_plots/save-figure-with-minimal-white-space.html

fig = gcf;
fig.PaperPositionMode = 'auto'
fig_pos = fig.PaperPosition;
fig.PaperSize = [fig_pos(3) fig_pos(4)];
© www.soinside.com 2019 - 2024. All rights reserved.