に設定PaperPositionMode
するauto
と、EPS ファイルの余分な空白が取り除かれますが、PDF の場合は取り除かれないようです。
PDF の空白を取り除くために、紙のサイズを図のサイズに変更する小さなスクリプトを作成しました。非常に短いので、他の誰かがそれを必要とする場合に備えて、以下に含めました.
これは、このドキュメントとこのStackOverflow の質問に触発されています。
私の解決策は、図の軸ではなく用紙サイズのみを操作することで機能します。これは、軸を操作するとサブプロットで問題が発生するためです。これはまた、いくらかの空白が残ることを意味します。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