解决问题:使用MATLAB的plot函数画图时弹出图片的大小和位置修改。
MATLAB画图的几个概念:
screen: 屏幕;
figure: 弹出来的对话框;figure变化,screen不会变化;screen变化,figure不会变化;
axes: figure 中的图像,axes的大小取决于figure,figure大小变化,axes大小也会变化;
set(gcf, ……): 对figure大小和位置进行设置;
set(gca, ……): 对axes大小和位置进行设置;
一、自定义figure的大小和位置
程序:
clear; clc; close all; t = 0:0.001:10; y1 = sin(t); figure(1); plot(t,y1);
程序运行结果:
默认情况下,figure大致在screen的正中间,大致为一个方形(具体参数没有深究),如果我们想要自定义figure在screen的位置和大小,有两种方法可以实现。
第一种方法:在声明figure时定义大小,将上述程序修改为:
clear; clc; close all; t = 0:0.001:10; y1 = sin(t); figure(\'Units\',\'centimeter\',\'Position\',[5 5 7 3.5]); plot(t,y1);
其中\'Units\',\'centimeter\' 用来定义单位;\'Position\',[5 5 7 3.5]用来定义位置。
[5 5 7 3.5]表示为[x0 y0 width height]
X0, y0: 表示figure左下角在screen中的位置,参考位置是screen左下角;
Width, height: 表示figure的宽和高的大小。
程序运行结果:
第二种方法:使用set(gcf, ……)命令,将上述程序修改为:
clear; clc; close all; t = 0:0.001:10; y1 = sin(t); figure(1); set(gcf,\'Units\',\'centimeter\',\'Position\',[5 5 7 3.5]); plot(t,y1);
单位和位置的定义方式同第一种方法,程序运行结果为:
二、 自定义figure中图像的大小和位置
使用set(gca, ……)指令,该指令设置的是图的坐标线axes的位置及大小,并不是坐标线标注的位置。
将上述程序修改为:
clear; clc; close all; t = 0:0.001:10; y1 = sin(t); figure(1); set(gcf,\'Units\',\'centimeter\',\'Position\',[5 5 7 3.5]); set(gca,\'position\',[0.3,0.2,0.5,0.6]); plot(t,y1);
该指令中的单位为相对值,其中0.3,0.2表示axes的左下角在figure中的距离为figure的宽度×0.3和figure的高度×0.2;
0.5和0.6表示axes的宽度和高度分别为figure的宽度×0.5和figure的高度×0.6。
程序运行结果为: