2

Figure を PDF 形式で保存しようとしています。つまり、Figure は Figure ウィンドウと同じサイズにする必要があります。

私はそれを行う方法が

figureNames = {'a', 'b', 'c'};
for i = 1:3
    set(figure(i), 'paperpositionmode', 'auto');
    print(figure(i), '-dpdf', figureNames{i})
end

しかし、それは機能していません。私はこれまでと同じくらい多くの空白を取得しています。誰かが何が悪いのか教えてもらえますか?

4

3 に答える 3

1

図をpdfファイルに変換するための「オールインワン」ソリューションを試すことができます。私はmlf2pdf(http://www.mathworks.com/matlabcentral/fileexchange/28545)を使用していますが、非常にうまく機能しているようです。さらに、すべてのラテックス組版により、作成されたフィギュアの品質ははるかに優れています

于 2012-05-01T20:50:15.817 に答える
1

に設定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
于 2012-05-01T21:03:46.180 に答える
1

私もこれに問題がありました。-depsc回避策は、 (カラー)で印刷するか-deps、グレースケールの図だけが必要な場合です。カプセル化された PostScript ファイルには、実質的に白い余白がありません。後で .eps ファイルを問題なく pdf に変換できます。LaTeX で作業している場合は、そのまま使用できます。

于 2012-05-01T17:38:37.847 に答える