本文总结了两种在matlab中使用完subplot后添加总图标题时遇到的尴尬问题。
1. 控制一个子图标题充当总标题
先看效果
对应代码
data = randn(4,100);
figure(1);
subplot(221); plot(data(1,:));
hand_t=title('虚总图(子图)标题');
v=get(hand_t,'Position');
v(1)=120;
set(hand_t,'Position',v);
subplot(222); plot(data(2,:));
subplot(223); plot(data(3,:));
subplot(224); plot(data(4,:));
其中 :
- 第4行:
hand_t=title('虚总图(子图)标题');
放在该位置表示对子图1作标题,并将其参数传给hand_t
(可以自行help title
或者doc title
一下)。 - 第5行:
v=get(hand_t,'Position');
表示将标题的位置信息取出来并赋值给v
。 - 第6行:
v(1)=120;
这里很关键,将决定性的影响标题的位置,自己可以试试。因为上图中每个子图的横坐标范围是1-100,目测120是正中间,所以取成120。 - 第7行:
set(hand_t,'Position',v);
就是重新将title
的放到v
的指定位置。
至于为什么是第6行中用v(1)
,第7行中用v
?个人理解是因为你有多少个子图,就申请了多少title
的存储空间,所以代码中用的是v(1)
作为操作对象。而最后set
时直接用v
,因为其他三个子图的title
没有赋值,所以可以直接用。因为达到了效果,就没去试了。
2. suptitle命令直接控制(super title的意思)
先看效果
对应代码:
data = randn(4,100);
figure(1);
subplot(221);plot(data(1,:));
subplot(222);plot(data(2,:));
subplot(223);plot(data(3,:));
subplot(224);plot(data(4,:));
suptitle('总图标题');
这个是比较理想的。
附带扩展阅读