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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
        有人想要利用 subplot 将三张图存在一个fig档,但是下次开启的时候, 又想要对其中一张图放大仔细看,那有没有什么方法可以从原来的 fig 档中抓出其中一张图?或者是将另外两张图删除呢?
, j+ D6 c& G' l$ {4 ?        首先你要弄清楚matlab中figure 的架构1 A  B, _1 ^4 M+ p6 F7 ^4 `, G& s
( j* s6 X  t/ r: ~3 \
        close all
4 Q# V7 X) a7 u: ]        x = -pi:.1:pi;8 ~$ h+ j) m( r+ |9 {
        y = sin(x);
; X' J# J" q5 C+ Z* L8 u5 h        plot(x,y)
2 q  T( C3 I7 f/ a8 N0 x9 N
- E* Y) L0 G% o' j3 q2 R        当以上指令执行到plot时
* ~; X7 N1 V( M        matlab会create一个figure  `: Q0 N1 F9 Z/ g) W
        再createn附属于这个figure的axes
* o, T3 B6 m* b& ?0 D        然后在这个axes上画图) b+ A. ?) ]0 \8 C

) ]( j0 n: H( ?7 O( S        close all/ ~3 ]- {* Z# U. `
        x = -pi:.1:pi;7 ?% T% S/ u0 p5 `: v' ?
        y1 = sin(x);1 d4 }! v/ r0 z: g/ @7 Z
        y2 = cos(x);
) F: j' l* O4 @        subplot(2,1,1);plot(x,y1)' n/ f( O4 l( H( I
        subplot(2,1,2);plot(x,y2)
* P  m2 I* I6 O8 y3 I( z3 S9 f$ J- F) J% x1 j7 y0 v0 y& d
        当以上指令执行到subplot时6 d8 A) Y6 X. L: d5 ~
        matlab会create一个figure
* Q/ [/ G: d4 P% b# }: r9 a1 C. D        及 "两个" 附属于这个figure的axes( H0 F% A1 q. N: }: o# y, Y  f) o
        plot会自动在第一个axes上画图, o6 @5 K" w2 }4 s# Y
1 T& l2 k' V) u+ c$ Z: V
        第二个subplot会跳到第二个axes1 ^( a( e0 S- g( H6 r' t# b
        也就是去activate第二个axes* g( R. q/ \. u( I: I5 V$ X" u
        接下来的plot就在这个axes上画图' E/ d* R6 |2 Z! O( J& I8 l; F1 h
% k3 O, P. }& z' x
        请先保留这个图以便进一步解说* F1 r# _' W- f" F. ^
, s, M6 \. `. t3 V- r* y9 x
        好...所以你现在要做的事情是2 P2 r: \4 _9 f) g6 J- t% P* V/ S
        把你想要的axes放大到整个figure! N* y% B  j* f& M- A
        并把其他axes删掉# v+ w9 P" V' U

& A9 t5 j# `, g, D& h4 ]  l        首先你要找到这个figure下一共有多少axes
: a* R: V- _0 L; C  M        我们要用get指令( D! b4 P4 ^/ D* x) A
        t=get(gcf,'children')
+ v: R8 B2 T# f: G        get用来取出物件的property1 r8 I' o5 Y& i
        gcf就代表目前active的figure
' ]$ x$ B- u) q. `& h) j6 E        children就是figure的其中一种property
- [( V1 B, h/ G  u, x& C; P2 D4 R9 p        在这里就代表所有归gcf管的axes6 G3 u. ~/ o  T# G# l

9 x) f6 Q; S( w2 {/ O. z5 a8 u        你会发现t是个长度为二的vector
& d- `, H$ b4 p* k        因为我们已经用subplot创了两个axes
4 ^; o( j# s2 F0 {" ^% I1 o! l        如果执行delete(t(1))
, v# y' e8 @! [* ?  i( M: p6 p        那cos的就会被删去" a' N0 b1 Z+ j& s3 |

# i7 [# U$ s0 W7 N8 [- D5 B        接下来得把剩下的axes放大
% X7 D. O, q7 h+ T        set(t(2),'position',[0 0 1 1])- `3 Y* n' u1 a# Q, M3 E
        set就是重新设定物件的property) ?5 C$ [4 e# e; _
        t(2)就是我们要设定的axes; b+ j2 L( Z# @  G4 V9 \
        position是axes的其中一种property
( q" G* h& N3 a% I6 q0 }! X" Q        [0 0 1 1]就是我们要设定的值% Q; \: T# _( j$ N8 q# g
        分别代表左底宽高
; ]9 X$ ^4 W: J5 N- O% J# S6 @
+ M& k( l3 @0 I7 D% Q7 o0 E        因为你希望放到最大
& o) u+ `  M% F* N        所以 "左边" 距离figure的框要是零
3 X1 O3 w0 q0 V* H' a        而 "底边" 距离figure的框要是零
+ O3 U) [( N. g1 p        宽度及高度都要是 100%: ^8 h' E+ b$ E

1 S$ w- A& `# `/ H8 d; M! V        这篇讲的很简略
9 x  w6 S1 J2 T4 V( ?( G. [& H/ T        你应该把matlab help中的Graphics翻过一次) a$ s3 R+ D* p# G* I
        尤其是Handle graphic Objects
9 y3 `; f/ Y0 m2 I        来互相对照7 ?1 e; ~6 E4 x; U
  • 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-8-16 06:43 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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