Как установить сюжет в Matlab для определенного размера? - PullRequest
8 голосов
/ 27 сентября 2011

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

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

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

Ответы [ 4 ]

24 голосов
/ 28 сентября 2011

Как объяснил @ 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_MATLAB screenshot_PDF

Без принтера я использую виртуальную линейку экрана для проверки измерений; Просто отобразите файл PDF с вашим предпочтительным средством просмотра и установите уровень масштабирования на 100% (я использую Sumatra PDF ). Если вы хотите попробовать это сами, просто имейте в виду, что некоторые программы просмотра ( Adobe Reader ) могут использовать пользовательский DPI, не соответствующий разрешению системы по умолчанию (у меня 96 пикселей / дюйм).

Здесь вы можете видеть нижний и левый поля, равные 10mm. То же самое относится и к двум другим полям:

margins_1cm

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

8 голосов
/ 27 сентября 2011

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

А именно:

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

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

Удачной прорисовки!

2 голосов
/ 27 сентября 2011

Загрузка Экспорт рис. (Требуется Ghostscript ).

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

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

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

0 голосов
/ 24 мая 2017

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

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