web-dev-qa-db-ja.com

matlabのプロットを特定のサイズに設定するにはどうすればよいですか?

一般的に、私はかなり複雑なx-yプロット(多くの重なり合う曲線)をA3形式にプロットしたいと思います。

A4 210x297  
A3 = A4*2 = 420 x 297  
... - 10mm each side = 400 x 277 (size of desired plot window)

PDF(またはその他の一般的な出力形式)で印刷したときにそのサイズに合うようにプロットのサイズを設定する最も簡単な方法は何ですか?

8
Rook

Figureのプロパティについてはmatlabのドキュメント を参照してください。

すなわち:

  • PaperSize-キャンバスのサイズを明示的に定義します。
  • PaperType-PaperSizeをいくつかの標準的な用紙サイズの1つに設定します。

内蔵のプロットツールを使用すると、図をあらゆる種類の画像形式で保存できるため、準備は万端です。上記の設定をいじると、図が印刷に適したサイズになるはずです。

ハッピープロット!

8
Lewis Norton

@ LewisNorton で説明したように、図のPaper***properties を設定する必要があります。以下は、寸法が420 x 297 mm(A3サイズ)のPDFファイルを作成する例です。ここで、プロットとファイルの境界の間のマージンはそれぞれ10 mmです(上、下、左、右)。

%# centimeters units
X = 42.0;                  %# A3 paper size
Y = 29.7;                  %# A3 paper size
xMargin = 1;               %# left/right margins from page borders
yMargin = 1;               %# bottom/top margins from page borders
xSize = X - 2*xMargin;     %# figure size on paper (widht & hieght)
ySize = Y - 2*yMargin;     %# figure size on paper (widht & hieght)

%# create figure/axis
hFig = figure('Menubar','none');
plot([0 1 nan 0 1], [0 1 nan 1 0]), axis tight
set(gca, 'XTickLabel',[], 'YTickLabel',[], ...
    'Units','normalized', 'Position',[0 0 1 1])

%# figure size displayed on screen (50% scaled, but same aspect ratio)
set(hFig, 'Units','centimeters', 'Position',[0 0 xSize ySize]/2)
movegui(hFig, 'center')

%# figure size printed on paper
set(hFig, 'PaperUnits','centimeters')
set(hFig, 'PaperSize',[X Y])
set(hFig, 'PaperPosition',[xMargin yMargin xSize ySize])
set(hFig, 'PaperOrientation','portrait')

%# export to PDF and open file
print -dpdf -r0 out.pdf
winopen out.pdf

screenshot_MATLABscreenshot_PDF

手元にプリンターがないので、仮想 スクリーンルーラー を使用して測定値を確認しています。 PDFファイルをお好みのビューアで表示し、ズームレベルを100%に設定するだけです(私はSumatra PDF を使用しています)これを自分で試してみたい場合は、一部のビューア(Adobe Reader)が使用している可能性があることに注意してくださいシステムのデフォルト解像度と一致しないカスタムDPI(96ピクセル/インチでマイニング)。

ここでは、10mmに等しい下と左の余白を見ることができます。同じことが他の2つのマージンにも当てはまります。

margins_1cm

上記の例では、軸が図全体をカバーするようにしたことに注意してください(図に灰色の領域はありません)。デフォルトでは、MATLABは目盛りラベル、軸ラベル、タイトルなどのために空のスペースを残します。これはもちろん、すでに知っていると思いますが、上記のマージンとは異なります:)

24
Amro

ダウンロード export fig (必須 Ghostscript )。

実行してみてください:

 surf(peaks);title('voila');export_fig 'test.pdf';

Adobeを使用してPDFファイルを印刷する場合は、「ページスケーリング」を「印刷可能領域に合わせる」に設定します。

2
teng

カスタム形状が必要な場合(たとえば、長くて細いプロットや正方形のプロットを別のファイルに含める場合)、PaperSizeオプションとPaperPositionオプションの両方を設定します。

set(gcf, 'PaperSize', [30 10], 'PaperPosition', [0 0 30 10])
print -pdf filename
0
user7868