QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5097|回复: 0
打印 上一主题 下一主题

[代码资源] 关于matlab画十字坐标

[复制链接]
字体大小: 正常 放大
mudan 实名认证    中国数模人才认证   

19

主题

2

听众

994

积分

  • TA的每日心情
    奋斗
    2020-3-27 12:01
  • 签到天数: 173 天

    [LV.7]常住居民III

    邮箱绑定达人

    群组数学建模培训课堂1

    群组2011年第一期数学建模

    群组小草的客厅

    群组科学狂想曲

    群组学术交流B

    跳转到指定楼层
    1#
    发表于 2012-10-31 17:16 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    本帖最后由 mudan 于 2012-10-31 17:20 编辑 ! [" f& }3 s: E- T% c( t3 s: d. A
    - n- L- |3 R( p1 ?- h  X
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)5 h% I3 R- m) L
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      8 ]1 @9 \! T( @) l, Z8 l, \- e) d
    3. error('??? 输入参数个数不对');; n0 F8 E8 {6 a0 j  x% _( ?
    4. return;
      % n3 Z1 k. H' U# u\" M& s5 Q
    5. end& v: [* E) s, t  p
    6. figure;\" s: n( J6 s2 t9 o
    7. plot(x,y)2 G1 p; l/ V$ F. i  \
    8. set(gca,'xticklabel',[])%不显示x标注+ F/ ^/ ?; @4 M\" M
    9. set(gca,'yticklabel',[])%不显示y标注
      9 i- V9 j\" i: w- u\" K  ]
    10. c=get(gca,'color'); %获取axes背景色
      0 B/ c4 Q/ K/ U
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
      $ E. U# ]\" e9 i5 V  {% ]: X
    12. grid on %加上网格& K) {8 z) {1 {' @+ Z4 G+ }
    13. if nargin==4$ l% j( U0 n% _% r. m& \6 K& B
    14. set(gca,'Xtick',Xticks); %设置Xtick
      # a, t4 w2 ]7 y% L
    15. set(gca,'Ytick',Yticks); %设置Xtick. v& j* z, |\" x6 @( ]5 _( H* _
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围# u0 e\" E; \  K, n) k
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围% b, q& X& l; ?' w
    18. end
      : }) _% v) X\" o7 E+ P  i
    19. x=get(gca,'XTick'); %获取Xtick% Y: y, t) M- Z, r  {9 p: G. h
    20. y=get(gca,'YTick'); %获取Ytick8 K/ Z+ j) }* V5 o( G
    21. xL=xlim; %获取X范围- g8 Z- h! \' H0 w% g
    22. yL=ylim; %获取Y范围$ x/ e) D7 L0 F# G; o, v6 }
    23. xcenter=mean(xL); %X中心
      4 O; U8 H# ^; z( P2 f% N
    24. ycenter=mean(yL); %Y中心
      6 m) E) Z: p/ W$ |4 @8 _\" c! `( ?5 D
    25. xrank=xL(2)-xL(1); %x跨度& x5 N$ _' O2 H/ X: v$ ]; O
    26. yrank=yL(2)-yL(1); %y跨度
      ! `1 Q, V. L, x4 z6 L
    27. hold on;$ D- t$ G* f% U. A
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
      3 ~& R* j2 U9 G/ ]3 m
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
      / @5 J# f: a9 M8 m
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
      8 J' E0 j2 R7 g: t
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头+ B/ h6 z* |) V/ u) m
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
      0 }* s' q! G; M  X
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
      1 K- s- L: h/ [2 b8 }5 x
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
      , r  S5 I2 G6 `3 R. V9 Y5 @! p% |& T+ @
    35. Lx=length(x); %x的长度
      ! U6 C6 _$ g/ X, T
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...# n6 \/ w: \5 H4 ~& |, L
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠. C# k' Z! W) L
    38. Ly=length(y);
      7 R. l. X% V\" }7 u; _
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      6 b5 o$ }\" y8 J# F
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠) \- x1 ^! y0 P9 G% M# g# b, M3 u
    41. for i=1:Lx; P; ^# n5 M+ V9 i% V  c6 T
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注# M3 c, E  H$ T9 @9 e' R\" B' k
    43. end1 j; U0 E6 G' g* z( D
    44. for i=1:Ly4 ]: _7 f/ d- |& N$ E: t
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注$ }6 y) v7 w8 `4 V
    46. end( I5 T  C8 b- x9 d& r
    47. hold off;# C& y' y6 B4 W3 z
    复制代码
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-18 03:48 , Processed in 0.450161 second(s), 55 queries .

    回顶部