Как установить сюжет в Matlab для определенного размера?

Как правило, я хочу построить довольно сложный график xy (множество перекрывающихся кривых) в формате A3 так:

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

Какой самый простой способ установить размер графика, чтобы он соответствовал этому размеру при печати в PDF (или любом другом распространенном формате вывода)?

4 ответа

Решение

См. Документацию по matlab для свойств фигур.

А именно:

  • PaperSize - Явно определяет размер холста.
  • PaperType - Наборы PaperSize к одному из нескольких стандартных размеров бумаги.

Встроенный инструмент построения графиков позволяет сохранять рисунки в виде всевозможных графических форматов, поэтому вам будет удобно. Использование вышеуказанных настроек должно привести к правильному размеру фигуры для печати.

Счастливого заговора!

Как объяснил @LewisNorton, вам нужно установить Paper*** свойства фигуры. Ниже приведен пример создания PDF-файла с размерами 420 x 297 mm (Размер A3), где поля между графиком и границами файла 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, То же самое относится и к двум другим полям:

margins_1cm

Обратите внимание, что в приведенном выше примере ось покрыла всю фигуру (на рисунке нет серой области). По умолчанию MATLAB оставляет некоторое пустое место для меток тиков, меток осей, заголовков и т. Д. Это, конечно, отличается от полей, упомянутых выше, которые, я полагаю, вы уже знаете:)

Скачать экспортный рис(требуется Ghostscript).

Попробуйте запустить:

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

При использовании Adobe для печати файла PDF установите для параметра "Масштаб страницы" значение "По размеру".

Если вы хотите, чтобы пользовательская фигура (например, длинная, тонкая или квадратная диаграмма была включена в другой файл), установите оба параметра: PaperSize а также PaperPosition опции.

set(gcf, 'PaperSize', [30 10], 'PaperPosition', [0 0 30 10])
print -pdf filename
Другие вопросы по тегам