如何将matlab中的绘图设置为特定大小?

Roo*_*ook 8 printing matlab plot export-to-pdf

一般来说,我希望将一个相当复杂的xy图(许多重叠曲线)绘制成A3格式,这样:

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

设置绘图大小的最简单方法是什么,以便在以PDF(或任何其他常见输出格式)打印时适合该大小?

Amr*_*mro 24

正如@LewisNorton解释的那样,您需要设置图的Paper*** 属性.下面是生成尺寸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
Run Code Online (Sandbox Code Playgroud)

screenshot_MATLAB screenshot_PDF

如果没有打印机,我正在使用虚拟屏幕标尺来检查测量结果; 只需使用首选查看器显示PDF文件,并将缩放级别设置为100%(我使用的是Sumatra PDF).如果你想自己尝试一下,请注意一些观众(Adobe Reader)可能正在使用不符合系统默认分辨率的自定义DPI(我的96像素/英寸).

在这里你可以看到底部和左边距等于10mm.其他两个边距也是如此:

margins_1cm

请注意,在上面的示例中,我使轴覆盖整个图形(图中没有灰色区域).默认情况下,MATLAB为刻度标签,轴标签,标题等留下了一些空白空间.这当然与上面提到的边距不同,我假设你已经知道:)


Lew*_*ton 8

有关图形属性,请参阅matlab文档.

即:

  • PaperSize - 明确定义画布的大小.
  • PaperType- 设置PaperSize为几种标准纸张尺寸之一.

内置的绘图工具可以将图形保存为各种图像格式,因此您应该很高兴.摆弄上述设置应该可以使您的数字成为正确的打印尺寸.

快乐的策划!