Как установить одинаковый размер для всех фигур для сохранения в Matlab? - PullRequest
0 голосов
/ 26 апреля 2019

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

Я подумал, что было бы лучше сначала построить фигуру, а затем получить размер и положение с помощью команды pos = get(gcf, 'Position') и установить положение для всех остальных фигур.

Это правильно? Есть ли лучшие подходы?

1 Ответ

2 голосов
/ 26 апреля 2019

Существует множество вариантов сохранения фигуры в Matlab. Если вы не используете диалоговое окно «Сохранить как», у вас есть две функции на выбор: saveas и print .

'Position' определяет местоположение и размер области рисования, заданной в виде вектора формы [высота ширины левого нижнего края]. Эта область исключает границы фигуры, строку заголовка и т. Д. В настоящее время вы в основном получаете размер и местоположение вашей первой фигуры, отображаемой на экране, и сохраняете данные в соответствии с этими размерами.

При сохранении ваших фигур таким образом, размеры будут соответствовать тому, что было определено внутри Matlab, или вы сами переопределите его, используя свойство 'Position'. Но вы не всегда хотите / хотите, чтобы размер сохраненной фигуры и размер фигуры были одинаковыми на экране. И вам также нужно позаботиться о положении ваших фигур, что в вашем случае вы получили с помощью функции set, я пропущу это в моем примере.

gcf=figure;
figure_width_to_save = 12.5; %cm
figure_height_to_save= 10; %cm
location_x=2; %cm
location_y=2; %cm
gcf.Units = 'centimeters';
gcf.Position = [location_x location_y figure_width_to_save figure_height_to_save]; 
saveas(gcf,[savefigures_path,savefigure_name,'_saveas.tiff'],'tiffn'); 
print(gcf, '-dtiffn', [savefigures_path,savefigure_name,'_print.tiff'], '-r300');

Но лучше иметь отдельный контроль над настройками, используемыми для сохранения фигуры. Для этого вы должны определить 'PaperPosition' свойство. 'PaperPosition' определяет размер и местоположение фигуры на странице при сохранении, заданный в виде четырехэлементного вектора формы [высота ширины левого нижнего края], но на самом деле со свойством 'PaperPosition' вам не нужно думать о местоположении вашей фигуры столько, сколько вы бы использовали со свойством 'Position'.

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

Функция saveas использует разрешение 150 DPI и использует свойства рисунка 'PaperPosition' и 'PaperPositionMode' для определения размера изображения. Если вы хотите напечатать или сохранить фигуры того же размера, что и фигура на экране, убедитесь, что для свойства 'PaperPositionMode' фигуры установлено значение 'auto', но я предпочитаю сам контролировать эти свойства.

Если вы сохраните свою фигуру в Matlab с помощью saveas , то в качестве примера вам нужно указать это:

gcf.PaperPositionMode = 'manual';
gcf.PaperUnits = 'centimeters';
gcf.PaperPosition = [0 0 figure_width_to_save figure_height_to_save]; 

saveas(gcf,[savefigures_path,savefigure_name,'.tiff'],'tiffn'); 

Функция print дополнительно позволяет вам контролировать сохраненное разрешение рисунка. Например, флаг -r300 устанавливает разрешение на выходе в 300 точек на дюйм. Чтобы указать разрешение экрана, используйте '-r0'.

print([savefigures_path,savefigure_name,'.tiff'],'-dtiffn','-r300')

Ознакомьтесь с примерами Matlab о сохранении фигур с определенным размером и разрешением

...