Проблемы с сохранением фигуры в Matlab с правильными пропорциями в pdf файле - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть фигура с 2x3 субплотами в Matlab, где каждый субплот содержит 2 гистограммы. Обычно я сохраняю рисунки Matlab в формате eps, но так как при этом удаляется прозрачность между гистограммами в каждом субплоте, я прибегнул к сохранению в формате pdf.

В настоящее время я сохраняю файл следующим образом:

figure;
set(gcf,'Position',[100 100 1400 500])
set(gcf,'PaperPositionMode','auto')
print(gcf, 'filename.pdf', '-dpdf','-r0');

Тем не менее, он создает PDF-файл в книжной ориентации, что означает, что некоторые вспомогательные участки будут вырезаны.

Теперь я искал ответы в Интернете, и рекомендуемый подход к решению моей проблемы приведен в этой ссылке .

Следуя подходу, у меня не вырезаны какие-либо вспомогательные сюжеты, но проблема в том, что это заставляет фигуру заполнить пространство моего pdf. Другими словами, мои гистограммы растянуты, чтобы заполнить пространство файла PDF в альбомном формате. Я бы просто предпочел PDF-файл, который имеет точно такие же пропорции, что и размер моей фигуры, который выше set(gcf,'Position',[100 100 1400 500]). Вот как это работает с eps, поэтому я хотел бы иметь то же поведение с pdf.

Может кто-нибудь помочь мне это исправить?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

По умолчанию MATLAB выводит PDF на полную страницу формата A4 или Letter.Если для параметра «PaperPositionMode» установлено значение «auto», это не изменится.Для других форматов выходного файла (например, EPS) эта настройка приводит к тому, что размер страницы настраивается в соответствии с размером рисунка.Не так для PDF.Вам необходимо вручную установить свойства «PaperPosition» и «PageSize».

В этом представлении File Exchange это обрабатывается для вас (я автор).

0 голосов
/ 16 сентября 2018

Чтобы убедиться, что вывод является альбомным:

set(gcf,'PaperOrientation','landscape')

Тогда используйте опцию "bestfit". Это увеличит его как можно больше, но сохранит соотношение сторон.

print(gcf, 'filename.pdf', '-dpdf','-r0','-bestfit')

На сайте Matlab * есть еще немного полезной информации

...