在利用matlab绘制图形时,如果需要产生多个子图,这就涉及到子图相对位置的设定已经整个图形窗口的大小
关于figure的三个不同命令
>> fid=figure(11);
>>
get(fid,'outerposition')
% 图形窗口(Figure position including title bar, menu bar, tool bars,
and outer edges)相对于屏幕的位置
ans =
16
68
593
932 %
593和932分别代表整个图形窗口的宽度(横向)和高度(竖向)
>>
get(fid,'position')
% 与outerposition的区别在于 不包含标题栏、菜单栏、工具栏等外围的东西
ans =
20
72
585 850
figure的position中的[left bottom width height]
是指figure的可画图的部分的左下角的坐标以及宽度和高度。
>>
get(fid,'paperposition')
% 定义落实在纸张上的实际可视图形与边缘的距离和整个图形的大小
ans =
0.6345
6.3452
20.3046 15.2284
需要获取调整后的图形,有两种不同的方法,真正有用的是position
和paperposition
利用position参数得到的图形在生成的figure窗口中可以得到最满意的图形,但是,如果想在word文档中得到你所看到的结果,就只能通过窗口上的File-save
as手动保存,因为利用saveas得到的图形是无法保存你所看到的样式的。 这虽然麻烦,但是得到的图形分辨率相对较高
与position
相比,paperposition可以直接通过saveas命令保存满意的图像,但是这种图像在直接生成的figure窗口中并不是那么令人满意的,但是这并不妨碍最终的美好结果。
在利用paperposition 设置图形中的字体大小时,通过fid=figure(11);
axes('fontsize',16)得到的效果很弱,或者说没有效果,如果希望子图的字体足够清楚,可以通过subplot
来实现
fid=figure;
set(fid,'paperposition',[3.0,3.5,15,30]);
h1=subplot(3,1,1);
po=get(h1,'position');
subplot(3,1,1,'replace');
subplot('position',[po(1),po(2)-0.02,po(3),po(4)],'fontsize',16);
% 调整子图之间上下的距离
注意:两者的尺度因子是不一样的!!
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
调整子图之间的相对位置和大小,所用的也是position 参数,不过是用在subplot 指令上
Example 1
fid1=figure(11);
set(fid1,'position',[20 72 585 850]);
h1=subplot(4,2,1);
po=get(h1,'position');
subplot(4,2,1,'replace');
subplot('position',[po(1),po(2)-0.01,po(3),po(4)],'fontsize',16);
r1=mean(rt(k1,:));
plot(yr,r1,'linewidth',1.5);
xlim([1961 2009]);
需要手动保存!
Example 2
fid2=figure(22);
%set(fid2,'position',[20 72 585 850]);
set(fid2,'paperposition',[0.5,5.5,25,40])
h1=subplot(4,2,1);
po=get(h1,'position');
subplot(4,2,1,'replace');
subplot('position',[po(1),po(2)-0.01,po(3),po(4)],'fontsize',16);
r1=mean(rt(k1,:));
plot(yr,r1,'linewidth',1.5);
xlim([1961 2009]);
程序自动保存!