一般来说,我希望将一个相当复杂的x-y图(许多重叠曲线)绘制成A3格式,以便:
A4 210x297
A3 = A4*2 = 420 x 297
... - 10mm each side = 400 x 277 (size of desired plot window)
设置绘图大小的最简单方法是什么,以便在以PDF(或任何其他常见输出格式)打印时适合该大小?
答案 0 :(得分:24)
正如@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
如果没有打印机,我使用虚拟screen ruler来检查测量结果;只需使用首选查看器显示PDF文件,并将缩放级别设置为100%(我使用 Sumatra PDF )。如果您想自己尝试一下,请注意一些观看者( Adobe Reader )可能正在使用与系统默认分辨率不匹配的自定义DPI(我的96像素/英寸)。
在这里,您可以看到左下边距等于10mm
。其他两个边缘也是如此:
请注意,在上面的示例中,我将轴覆盖整个图形(图中没有灰色区域)。默认情况下,MATLAB为刻度标签,轴标签,标题等留下一些空白空间。这当然与上面提到的边距不同,我假设你已经知道了:)
答案 1 :(得分:8)
请参阅the matlab documentation for figure properties。
即:
PaperSize
- 明确定义画布的大小。PaperType
- 将PaperSize
设置为几种标准纸张尺寸之一。内置的绘图工具可以将图形保存为各种图像格式,因此您应该很高兴。摆弄上述设置应该可以使您的数字正确打印尺寸。
快乐的策划!
答案 2 :(得分:2)
下载export fig(需要Ghostscript)。
尝试跑步:
surf(peaks);title('voila');export_fig 'test.pdf';
使用Adobe打印pdf文件时,请将“页面缩放”设置为“适合可打印区域”。
答案 3 :(得分:0)
如果您想要自定义形状(例如,对于长而细的绘图或要将方形图包含在另一个文件中),请同时设置PaperSize
和PaperPosition
选项。
set(gcf, 'PaperSize', [30 10], 'PaperPosition', [0 0 30 10])
print -pdf filename