作者sunev (Veritas)
看板MATLAB
标题Re: [问题] 请问subplot的图可以萃取出其中之一吗?
时间Thu Feb 8 19:03:53 2007
※ 引述《phonex (一生悬命)》之铭言:
: 我想要利用 subplot 将三张图存在一个fig档
: 但是下次开启的时候, 又想要对其中一张图放大仔细看
: 请问又没有方法可以从原来的 fig 档中 抓出其中一张图
: 或者是将另外两张图删除呢?
首先你要弄清楚matlab中figure 的架构
close all
x = -pi:.1:pi;
y = sin(x);
plot(x,y)
当以上指令执行到plot时
matlab会create一个figure
再createn附属於这个figure的axes
然後在这个axes上画图
close all
x = -pi:.1:pi;
y1 = sin(x);
y2 = cos(x);
subplot(2,1,1);plot(x,y1)
subplot(2,1,2);plot(x,y2)
当以上指令执行到subplot时
matlab会create一个figure
及 "两个" 附属於这个figure的axes
plot会自动在第一个axes上画图
第二个subplot会跳到第二个axes
也就是去activate第二个axes
接下来的plot就在这个axes上画图
请先保留这个图以便进一步解说
好...所以你现在要做的事情是
把你想要的axes放大到整个figure
并把其他axes删掉
首先你要找到这个figure下一共有多少axes
我们要用get指令
t=get(gcf,'children')
get用来取出物件的property
gcf就代表目前active的figure
children就是figure的其中一种property
在这里就代表所有归gcf管的axes
你会发现t是个长度为二的vector
因为我们已经用subplot创了两个axes
如果执行delete(t(1))
那cos的就会被删去
接下来得把剩下的axes放大
set(t(2),'position',[0 0 1 1])
set就是重新设定物件的property
t(2)就是我们要设定的axes
position是axes的其中一种property
[0 0 1 1]就是我们要设定的值
分别代表左底宽高
因为你希望放到最大
所以 "左边" 距离figure的框要是零
而 "底边" 距离figure的框要是零
宽度及高度都要是 100%
这篇讲的很简略
你应该把matlab help中的Graphics翻过一次
尤其是Handle graphic Objects
来互相对照
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.54.155
1F:推 youbet:推,很详细阿 02/08 19:53
2F:推 GeneralJ:堆 多谢大大,受益良多 02/09 02:31
3F:推 phonex:感谢强者的解释 02/09 10:08