首页 > 解决方案 > 如何为所有图形设置相同的大小以保存在 Matlab 中?

问题描述

我想使用 Matlab 为所有图形设置相同的大小,以便以后保存。我怎样才能做到这一点?

我认为最好先绘制一个图形,然后使用 command 获取大小和位置pos = get(gcf, 'Position'),并为所有其他图形设置位置。

这是正确的吗?有更好的方法吗?

标签: matlabmatlab-figure

解决方案


在 Matlab 中有很多关于如何保存图形的选项。如果您不使用另存为对话框,则有两个功能可供选择:另存打印

'Position'定义可绘制区域的位置和大小,指定为 [left bottom width height] 形式的向量。该区域不包括图形边框、标题栏等。现在,您基本上可以获得第一个图形在屏幕上显示的大小和位置,并根据这些尺寸进行保存。

以这种方式保存图形时,尺寸将对应于 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'定义保存时页面上的图形大小和位置,指定为 [left bottom width height] 形式的四元素向量,但实际上使用'PaperPosition'属性您不需要像使用那样考虑图形的位置财产'Position'

现在关于保存本身,您没有提到您使用哪种方法。

saveas函数使用 150 DPI 的分辨率,并使用图窗的和'PaperPosition'属性'PaperPositionMode'来确定图像的大小。如果要打印或保存与屏幕上的图形大小相同的图形,请确保将'PaperPositionMode'图形的属性设置为'auto',但我更喜欢自己控制这些属性。

如果您使用saveas将图形保存在 Matlab 中,则作为示例,您需要指定:

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'); 

打印功能还允许您控制已保存的图形分辨率。例如,标志“-r300”将输出分辨率设置为每英寸 300 点。要指定屏幕分辨率,请使用“-r0”。

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

查看 Matlab 关于以特定大小和分辨率保存图形的示例


推荐阅读