在Matlab中以正确比例在pdf文件中保存图形时出现问题

时间:2018-09-15 20:50:47

标签: matlab pdf matlab-figure

我在Matlab中有一个带有2x3子图的图形,其中每个子图都包含2个直方图。我通常将Matlab数据保存在eps中,但是由于这样做会消除每个子图中直方图之间的透明度,因此我将其另存为pdf。

当前,这是我保存文件的方式:

figure;
set(gcf,'Position',[100 100 1400 500])
set(gcf,'PaperPositionMode','auto')
print(gcf, 'filename.pdf', '-dpdf','-r0');

但是,它会以纵向布局生成pdf文件,这意味着某些子图会被剪切掉。

现在,我一直在网上寻找答案,this link中给出了解决问题的推荐方法。

按照这种方法,我没有切出任何子图,但是问题是这迫使图形填充我的pdf空间。换句话说,我的直方图被拉伸以横向格式填充pdf文件的空间。我只希望有一个与我的图形尺寸完全相同的pdf文件,上面的图形尺寸为set(gcf,'Position',[100 100 1400 500])。这就是eps的工作方式,因此我希望pdf具有相同的行为。

有人可以帮我修复它吗?

2 个答案:

答案 0 :(得分:2)

要确保输出为横向:

set(gcf,'PaperOrientation','landscape')

然后使用“最佳匹配”选项。它将尽可能地缩放比例,但保持宽高比。

print(gcf, 'filename.pdf', '-dpdf','-r0','-bestfit')

关于Matlab's website

的更多信息

答案 1 :(得分:0)

MATLAB的PDF输出始终默认在完整的A4或Letter尺寸的页面上。将“ PaperPositionMode”设置为“自动”时,这不会改变。对于其他输出文件格式(例如EPS),该设置会将页面大小调整为图形大小。 PDF并非如此。您需要手动设置“ PaperPosition”和“ PageSize”属性。

This File Exchange submission handles this for you(我是作者)。