我正在尝试以PDF格式保存图形,这样我就不会在其周围获得无关的空白区域,即图形应与图形窗口的大小相同。
我很确定这样做的方法是
figureNames = {'a', 'b', 'c'};
for i = 1:3
set(figure(i), 'paperpositionmode', 'auto');
print(figure(i), '-dpdf', figureNames{i})
end
但它不起作用。我得到的空白一如既往。有人可以告诉我什么是错的吗?
答案 0 :(得分:1)
我也遇到过这个问题。解决方法是在-depsc
(颜色)或-deps
打印,如果您只需要灰度数字。封装的postscript文件几乎没有白边。您可以稍后将.eps文件转换为pdf,如果您在LaTeX中工作,则可以原样使用它。
答案 1 :(得分:1)
您可以尝试“一体化”解决方案,将数字转换为pdf文件。我用的是mlf2pdf (http://www.mathworks.com/matlabcentral/fileexchange/28545)它看起来效果很好。此外,由于所有东西的乳胶排版,生产数据的质量更好
答案 2 :(得分:1)
似乎将PaperPositionMode
设置为auto
将消除EPS文件的无关空白区域,但不会放弃PDF格式。
为了摆脱PDF的空白区域,我写了一个小脚本来调整纸张的大小。因为它太短了,所以我把它包括在下面以防其他人需要它。
它的灵感来自this document以及此StackOverflow question。
我的解决方案只能操纵纸张尺寸,而不是图形轴,因为操纵轴会遇到子图的问题。这也意味着一些空白区域将保留。在MATLAB的词汇表中,数字以OuterPosition
而不是TightInset
为界。
function [filename] = printpdf(fig, name)
% printpdf Prints image in PDF format without tons of white space
% The width and height of the figure are found
% The paper is set to be the same width and height as the figure
% The figure's bottom left corner is lined up with
% the paper's bottom left corner
% Set figure and paper to use the same unit
set(fig, 'Units', 'centimeters')
set(fig, 'PaperUnits','centimeters');
% Position of figure is of form [left bottom width height]
% We only care about width and height
pos = get(fig,'Position');
% Set paper size to be same as figure size
set(fig, 'PaperSize', [pos(3) pos(4)]);
% Set figure to start at bottom left of paper
% This ensures that figure and paper will match up in size
set(fig, 'PaperPositionMode', 'manual');
set(fig, 'PaperPosition', [0 0 pos(3) pos(4)]);
% Print as pdf
print(fig, '-dpdf', name)
% Return full file name
filename = [name, '.pdf'];
end