matlab - 如何为所有图形设置相同的大小以保存在 Matlab 中?
问题描述
我想使用 Matlab 为所有图形设置相同的大小,以便以后保存。我怎样才能做到这一点?
我认为最好先绘制一个图形,然后使用 command 获取大小和位置pos = get(gcf, 'Position')
,并为所有其他图形设置位置。
这是正确的吗?有更好的方法吗?
解决方案
在 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')
推荐阅读
- reporting-services - SSRS Report Server 2008 Preview and Design 与发布的报告不匹配(WYSIWYG 失败)
- windows - 从 Windows 10 连接到专用 LAN 中的远程 Kubernetes 集群
- url - 这是一个单页网站还是单独的网页?
- mysql - SQL - 一列中有多个位置
- cuda - RTX 2080 Ti cuda-memcheck 在创建 Cublas 上下文时遇到错误
- python - 计数字符串函数的时间和空间复杂度是多少
- jquery - 如何检测变量是否在一段时间内没有变化?
- sql-server - Select 语句中的 LINQ 附加过滤器
- ios - 如何在 iOS 上使用 kCIInputTransformKey
- c - 在 C 的编译时检查类型是结构还是指针?