如何将绘图保存为PDF文件而没有大的空白
如果我以EPS格式打印一个图表,那么EPS文件的内容就完全被这个图表所占据。 但是,如果我以PDF格式打印一个图表,那么PDF文件中的图表上方和下方都有很大的利润空间。 如何在PDF文件中保存一个没有大的空白的情节?
我的猜测是如何根据绘图大小自动selectPDF文件中适当的“纸张”大小进行打印。
这是我在tex.stackexchange.com上提出的一个问题,我得到的答复大多是试图解决MATLAB以外的问题,而我仍然不太理解在MATLAB中试图求解的唯一答案。 所以我想看看这里是否有更多的意见。
你是什么意思“适当的大小”? MATLAB的数字就像vector图,所以你可以基本上select你想要的大小。
您可以使用function设置纸张的大小和graphics的位置。
例:
plot(epx(1:5)); set(gcf, 'PaperPosition', [0 0 5 5]); %Position plot at left hand corner with width 5 and height 5. set(gcf, 'PaperSize', [5 5]); %Set the paper to have width 5 and height 5. saveas(gcf, 'test', 'pdf') %Save figure
上面的代码将删除大部分的边界,但不是全部。 这是因为左边angular(位置vector中的[0 0]
)不是“真正的”左边angular。 要删除更多的边框,可以调整PaperPosition
和PaperSize
vector。
例:
plot(exp(1:5)) set(gcf, 'PaperPosition', [-0.5 -0.25 6 5.5]); %Position the plot further to the left and down. Extend the plot to fill entire paper. set(gcf, 'PaperSize', [5 5]); %Keep the same paper size saveas(gcf, 'test', 'pdf')
这适用于显示目的:
set(gca(), 'LooseInset', get(gca(), 'TightInset'));
也应该为印刷工作。
MATLAB中的轴大小有时可能有点棘手。 您怀疑纸张尺寸属性是问题的一部分,这是正确的。 另一个是MATLAB计算的自动边界。 幸运的是,有可设置的轴属性,可以绕过这些边界。 您可以使用这里解释的Position
和TightInset
属性的组合来重置边距,使其足够大到轴标签。 尝试这个:
>> h =图; >>轴; >> set(h,'InvertHardcopy','off'); >> saveas(h,'WithMargins.pdf');
你会得到一个PDF格式,如下所示: 但现在这样做:
>> tightInset = get(gca,'TightInset'); >> position(1)= tightInset(1); >> position(2)= tightInset(2); >> position(3)= 1 - tightInset(1) - tightInset(3); >> position(4)= 1 - tightInset(2) - tightInset(4); >> set(gca,'Position',position); >> saveas(h,'WithoutMargins.pdf');
你会得到:
如何摆脱MATLAB的saveas或打印输出中的白色边缘的脚本做你想要的。
MATLAB文件交换中的函数export_fig将默认输出一个数字时,在输出的PDF / EPS文件周围裁剪掉空白。
在我看来,这里所有的方法(文件交换解决scheme都没有考虑到)都缺乏必要的步骤,或者最终通过一些模糊的解决方法来实现。
数字大小需要与纸张大小相等,白色边距不见了。
A = hgload('myFigure.fig'); % set desired output size set(A, 'Units','centimeters') height = 15; width = 19; % the last two parameters of 'Position' define the figure size set(A, 'Position',[25 5 width height],... 'PaperSize',[width height],... 'PaperPositionMode','auto',... 'InvertHardcopy', 'off',... 'Renderer','painters'... %recommended if there are no alphamaps ); saveas(A,'printout','pdf')
当你的数字出现时,会给你一个pdf输出,正好是你想要的大小。 如果你想要更紧密的话,你可以把这个解决scheme与b3的答案结合起来。
保存到EPS然后转换为PDF:
saveas(gcf, 'nombre.eps', 'eps2c') system('epstopdf nombre.eps') %Needs TeX Live (maybe it works with MiKTeX).
您将需要一些将EPS转换为PDF的软件。
system ('/usr/bin/pdfcrop filename.pdf');