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

时间:2019-04-26 07:42:18

标签: matlab matlab-figure

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

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

对吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

关于如何在Matlab中保存图形,有很多选择。如果不使用“另存为”对话框,则有两个功能可供选择: saveas print

'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'定义了保存时图形的大小和在页面上的位置,指定为[左底部宽度高度]形式的四元素矢量,但是实际上,'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')

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