QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5140|回复: 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 编辑 5 G. G( m- d7 Y  d7 J0 m: {
    5 ~" T2 _" E6 z) T
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks): k8 G% p4 U4 r' h  _# L
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错* c: R; B) x7 D9 e4 E; z
    3. error('??? 输入参数个数不对');
      2 B, l3 r( a' Z1 w4 P
    4. return;) ~6 p1 o1 {: G! W( _) E! ^& ]
    5. end
      & p& A( I' i( q- w4 J# k, e
    6. figure;$ k\" j: x  q# F5 F* Y. G
    7. plot(x,y)( s6 Q0 u, S# ^' w\" `# Z8 C
    8. set(gca,'xticklabel',[])%不显示x标注
      $ k  s3 b1 X% ^
    9. set(gca,'yticklabel',[])%不显示y标注
      % d. Z# ]- d5 }
    10. c=get(gca,'color'); %获取axes背景色
      # {9 N3 E! C# _) ~+ v\" j. d
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
      9 D' g1 l5 c4 Q2 ?
    12. grid on %加上网格8 S\" W. u: L2 |* u8 K
    13. if nargin==49 B$ Z0 h2 K. b\" S+ @) Y# z
    14. set(gca,'Xtick',Xticks); %设置Xtick
      + L- _1 w6 f, Q$ H/ W\" W3 r0 n4 L
    15. set(gca,'Ytick',Yticks); %设置Xtick
      & @, B/ p# h9 X
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      \" l1 \) I7 |: N5 F
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      , a) ^! t2 S* j
    18. end
      . b3 S4 ^8 j/ x' _\" `7 h
    19. x=get(gca,'XTick'); %获取Xtick( M/ O. D) H4 U7 n* u9 ~
    20. y=get(gca,'YTick'); %获取Ytick
      , i, p4 k8 ]\" I: i
    21. xL=xlim; %获取X范围* Z4 q( S  Q$ v/ U% l1 j
    22. yL=ylim; %获取Y范围5 \. ^8 \/ j: I! S. _  i4 n) @% ], X
    23. xcenter=mean(xL); %X中心6 A9 `% G; J2 x2 }\" A9 a8 D
    24. ycenter=mean(yL); %Y中心
      6 ]9 Q2 E7 T% ?8 [8 a  X
    25. xrank=xL(2)-xL(1); %x跨度
      9 W\" I3 b% f) q3 U8 v2 U
    26. yrank=yL(2)-yL(1); %y跨度
      1 |6 }) I7 Z+ X4 Y$ K\" ]
    27. hold on;
      + s  @# Z7 @2 `5 k\" @
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
      ! d; c( w' n. L
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...7 \5 k$ e* N+ A, r2 I8 |6 X
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
      ' k( h\" ?9 [. Z0 p  c6 ]
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头- ?8 H; a1 Q. N* |+ V3 X
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
      . X$ k5 L3 C\" R' O3 v
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];, O4 O4 g. U4 d& m
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头& E, |! h0 n: D. S- j; n) y0 t
    35. Lx=length(x); %x的长度
      . m0 y0 K$ k7 G+ K
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      ' I+ a. K1 k& ~! A/ o
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠2 {, f( y1 w  K. _
    38. Ly=length(y);, C\" a+ n  `! i, v+ W\" ]
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      3 J, m: x' U! v' r
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠% O; x; ^! g7 z8 |4 Z% A
    41. for i=1:Lx$ ?: \5 m+ R0 d- m
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注* x8 ]5 W& d, |7 e5 }( L
    43. end, z7 w5 y, b  _% C2 k: i
    44. for i=1:Ly
      ' p$ z: w/ O3 ^/ p7 s
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注7 f8 q  d. |& G4 A( O
    46. end
      % i: H2 j* N% L; O& o4 J
    47. hold off;4 O9 e* b; l2 Q1 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-8-26 06:57 , Processed in 0.421113 second(s), 55 queries .

    回顶部