如何在Matlab中为保存的所有图形设置相同的大小?

How to set the same size for all the figures for saving in Matlab?

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

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

是否正确?还有更好的方法吗?

在Matlab中如何保存图形有很多选项。如果不使用“另存为”对话框,则有两个函数可供选择:saveasprint.

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

以这种方式保存图形时,尺寸将对应于 Matlab 中内部定义的任何内容,或者您​​自己使用 'Position' 属性 重新定义。但是您并不总是 want/need 保存图形的大小和图形在屏幕上显示的大小相同。而且你还必须注意你的数字的位置,在你的情况下你使用 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' 定义保存时图形大小和页面位置,指定为 four-element 形式的矢量 [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'); 

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

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

Check out Matlab's examples about saving figures at specific size and resolution