找回密码
 注册
关于网站域名变更的通知
查看: 532|回复: 1
打印 上一主题 下一主题

如何在MATLAB中将subplot绘出的子图放大显示

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-7 10:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
        有人想要利用 subplot 将三张图存在一个fig档,但是下次开启的时候, 又想要对其中一张图放大仔细看,那有没有什么方法可以从原来的 fig 档中抓出其中一张图?或者是将另外两张图删除呢?2 Q" i% F6 J# k* q
        首先你要弄清楚matlab中figure 的架构
" g' c4 v3 ~5 [- i" A& d- W4 H5 g9 i
        close all; p2 y$ R: e  O
        x = -pi:.1:pi;0 D  x4 l, y/ {" o" g
        y = sin(x);) |& z" ~% X: _( Y& C1 H9 Q
        plot(x,y)
+ |0 c6 J) f0 B
2 U  g) g% r. O  W        当以上指令执行到plot时0 @% U; c: G& D
        matlab会create一个figure; ]: S- R/ D+ I/ w$ l
        再createn附属于这个figure的axes) f7 U4 P- d* u6 L& W* J- S. _
        然后在这个axes上画图
- D6 |5 {" F* f0 ~% O# D2 e9 w% `3 R* ]. d
        close all3 A- f% g3 U% }. J
        x = -pi:.1:pi;: b/ k4 X1 u; v  O
        y1 = sin(x);
4 K* }/ \- s/ e! T9 A* S- [        y2 = cos(x);
) I2 I) n! \4 K! ]8 ^        subplot(2,1,1);plot(x,y1)2 _9 B2 ^6 m+ J4 r
        subplot(2,1,2);plot(x,y2)9 ]1 E- V$ d/ ?6 ]) o/ {$ M
: d5 }' _' r6 @* L  h% N
        当以上指令执行到subplot时
' W1 _' ]6 s* B6 f1 ?/ a        matlab会create一个figure/ ?, ~5 p6 W% K, P2 J
        及 "两个" 附属于这个figure的axes
' W5 U+ N9 B7 L2 Q0 w. N6 k        plot会自动在第一个axes上画图  L1 U0 x0 G- Z' e

, E/ }( R# F9 x; }/ k! K; P        第二个subplot会跳到第二个axes1 J( D: I$ q2 t6 _
        也就是去activate第二个axes
. d) v& ^# y# ^, c& \8 f        接下来的plot就在这个axes上画图
! b& ~" L6 l/ i$ Q9 S2 R# E0 U
: Z9 }% U) Q# s        请先保留这个图以便进一步解说( a- W9 L1 @+ S& g
4 C* m4 K5 j- ~0 d
        好...所以你现在要做的事情是& s. H# D* e. x( O
        把你想要的axes放大到整个figure& Z2 C" N7 x% W$ _* i0 E1 u
        并把其他axes删掉0 q/ o/ T1 y0 m5 g3 b
0 ]* {. V! w( v5 x
        首先你要找到这个figure下一共有多少axes) X6 X8 n3 t- c# }) W
        我们要用get指令
* g  p$ e3 i! e, z8 g: J        t=get(gcf,'children')
7 t- K5 W2 w; a" F        get用来取出物件的property$ [( r5 G3 X9 \2 h8 x& X' W
        gcf就代表目前active的figure5 s1 d3 _: |. s% l& p
        children就是figure的其中一种property
% u6 T* N& Y/ Q$ T        在这里就代表所有归gcf管的axes
" C- S! J8 J, L. w2 \
* u4 A7 \- `( W; {        你会发现t是个长度为二的vector$ Z; d) j+ K6 c% x0 b0 F. G0 h2 ]$ Z
        因为我们已经用subplot创了两个axes( A' k( c, N. \
        如果执行delete(t(1)); o, c2 y, E0 o+ |8 G* q
        那cos的就会被删去
6 u- K! X) T4 m+ a% R- J! N* Z. N* `. ^4 {7 ~; j4 ]1 @
        接下来得把剩下的axes放大+ f. i0 h) [6 K. F2 k$ F
        set(t(2),'position',[0 0 1 1])
& H( k8 d0 P  m( `        set就是重新设定物件的property2 X! d  @) n& X1 h' F
        t(2)就是我们要设定的axes2 b5 K$ v% M: v
        position是axes的其中一种property3 |9 [: m# [9 z0 K
        [0 0 1 1]就是我们要设定的值: Q) `4 D& U( ]" m* }2 z" y$ Z% I& A
        分别代表左底宽高' F6 m  f1 E; O! o" g
$ M5 l: p5 B. H7 J, }4 w% f
        因为你希望放到最大
8 m7 F/ s! W, `* J5 n        所以 "左边" 距离figure的框要是零
  V8 R# y- W; E9 b        而 "底边" 距离figure的框要是零
0 _2 V, f! h) Q7 R3 W, a        宽度及高度都要是 100%
3 u" d% q% ?& G- T# L3 g
4 }1 f8 o: K. W) t$ K8 d' v9 J        这篇讲的很简略" [9 k$ |/ @1 P
        你应该把matlab help中的Graphics翻过一次1 o2 A1 O& p+ F- _
        尤其是Handle graphic Objects
  A, G' C1 _3 W- @* e, \7 T# ]        来互相对照
: b7 J! }% [. J/ l: C
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-4-7 18:45 | 只看该作者
    在MATLAB中将subplot绘出的子图放大显示
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-21 19:30 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表