QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5200|回复: 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 编辑 7 ^  r8 |4 K+ ?8 a2 f8 U% G
    " F; S+ e) a1 r$ b; `/ J3 ^
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)6 x/ i' T# w# p5 Z! W5 r3 n; ~
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错( A; U' r) I8 l# R) f$ ^2 r
    3. error('??? 输入参数个数不对');* x& c; _( D+ R& e3 A2 }
    4. return;
      ; F$ }\" Q0 V  M! G9 G1 j5 U
    5. end
        w9 K# y/ Z' |$ E0 R4 S
    6. figure;( Y7 |' L+ i  t3 v5 D5 I
    7. plot(x,y), R0 K& J- \0 x
    8. set(gca,'xticklabel',[])%不显示x标注0 }- L\" r! ], f6 x+ X$ j
    9. set(gca,'yticklabel',[])%不显示y标注
      & y, z$ K7 W: _- a- ?8 W; r. @
    10. c=get(gca,'color'); %获取axes背景色\" c. I) H! X\" t$ K
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色% [% g5 R' W6 a5 K
    12. grid on %加上网格
      + P+ A+ r& j6 ^) T, B
    13. if nargin==4% l+ ]% b0 U; H; w% j
    14. set(gca,'Xtick',Xticks); %设置Xtick/ J, E/ V3 }2 Z8 t: V
    15. set(gca,'Ytick',Yticks); %设置Xtick8 o7 p* m4 d1 L0 [! B
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围8 g7 |# y1 _& j3 g5 w8 x
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      + @1 E  y, Z; |\" m
    18. end
      6 \# u( o5 y9 Q; d( H0 o% @% \
    19. x=get(gca,'XTick'); %获取Xtick5 @+ H3 {0 ?/ O* f2 d
    20. y=get(gca,'YTick'); %获取Ytick& H! J- w$ ~/ M\" p- E
    21. xL=xlim; %获取X范围
      $ u4 ^  K; r7 D
    22. yL=ylim; %获取Y范围
      / h& H& z, U# o
    23. xcenter=mean(xL); %X中心
      : `, q' X5 c  O1 k0 `
    24. ycenter=mean(yL); %Y中心
      5 o, a) _+ h, ^, p2 e  i/ e
    25. xrank=xL(2)-xL(1); %x跨度
      ; D2 \6 q7 n3 `% }9 {& n8 D. G0 a0 j
    26. yrank=yL(2)-yL(1); %y跨度; ~- Q6 O' ?' W
    27. hold on;% @1 C  A8 S0 I( Z3 q! |/ r7 ]
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴7 W6 Q( I, U& U5 U! n0 G
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
      # n% b; B6 S! W7 N( p5 E! U
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; * m1 }0 d  b$ `8 ^+ T/ v\" d
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头/ z2 ^; f- u# M: K6 N6 P
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...! \: U9 @  f7 o) I: o3 U- v
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];! I& M* s9 I: Z+ m/ d; s! V
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
      % i( p& Y0 J\" E& y9 ]# o& g* O
    35. Lx=length(x); %x的长度
      : F7 Q5 v4 \6 _\" S2 k$ n) T% F
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      , F1 H3 c: c6 ?! D
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠# D8 H, U6 h8 u) O' N9 J+ V
    38. Ly=length(y);& G1 J, v9 l& a' o  M. V5 V8 W
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      0 k2 ?: _* t/ j8 k- G& v7 ?
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      , V6 d! ~$ }3 r. F0 Q2 h
    41. for i=1:Lx
      ! o3 }5 s0 K. `
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      6 `; a! u2 o. W
    43. end8 R! c6 P4 F2 g
    44. for i=1:Ly- F' u+ G) c$ y2 J/ R2 N. X( x
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注/ Y4 K) U$ X  y& U
    46. end
      & c' V' N9 {9 i: j% w9 H\" Q$ s
    47. hold off;
      2 R$ c2 `4 t7 r+ d0 p8 l+ P4 g
    复制代码
    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-10-25 10:16 , Processed in 0.877243 second(s), 54 queries .

    回顶部