QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5116|回复: 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 编辑
    , W4 S/ A! V% V" x" _2 _/ E/ k4 `  b+ C
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      . G6 v7 t6 j6 ~3 d) E
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错5 c  M4 z) X0 E( S, y# ^9 }* U
    3. error('??? 输入参数个数不对');( h6 h9 I2 Z4 R
    4. return;, [6 h, H/ e' M9 E: |+ F% n
    5. end/ B; I3 _  r7 Y& C+ `- \. u
    6. figure;
      # }1 L# d: H4 e; Z0 T1 K4 l& d
    7. plot(x,y)
      1 u! c  ]7 g% d8 R
    8. set(gca,'xticklabel',[])%不显示x标注
      0 _& q. p7 ]/ N4 Y8 q
    9. set(gca,'yticklabel',[])%不显示y标注
      4 A) ~3 T: o# M( s0 s* w
    10. c=get(gca,'color'); %获取axes背景色& L4 W# \  f: b
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色/ x5 y$ R$ i) ~4 L\" |
    12. grid on %加上网格
      ( }8 I1 ]: n& u\" K$ \# H
    13. if nargin==4
      0 N9 u$ i& f5 G# |2 Y
    14. set(gca,'Xtick',Xticks); %设置Xtick
      1 r' b  E# A  ?
    15. set(gca,'Ytick',Yticks); %设置Xtick
      * m- R* ?\" K4 N
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围7 W/ R* @# T\" s, p' j' J, K1 z
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围& n3 T# U; H& _; B( M% F
    18. end
      # u0 ?\" Z\" E  {7 H1 w: p( l' y
    19. x=get(gca,'XTick'); %获取Xtick+ H7 g! Q7 W+ p  L& h
    20. y=get(gca,'YTick'); %获取Ytick- m8 ^8 L$ @% O3 e# o
    21. xL=xlim; %获取X范围9 F: k% i% k/ I* X
    22. yL=ylim; %获取Y范围
      \" W- X6 T& O' [
    23. xcenter=mean(xL); %X中心* [/ S\" s  E4 ~
    24. ycenter=mean(yL); %Y中心. k4 S6 w# K* g6 W
    25. xrank=xL(2)-xL(1); %x跨度
      , L) P: w* m( K) b& @, Q1 K( Y
    26. yrank=yL(2)-yL(1); %y跨度
      2 c0 \( W7 v: @2 Q+ N. g. V
    27. hold on;
      4 Z3 P1 ?# I* Y5 _' m1 i
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴  ?9 l0 `% t3 u
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...* f4 }. j0 S2 V
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; 9 x8 G! d! }, I# u0 x+ k% V. U
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头: G: h\" T+ Y0 S/ _$ A; I8 [1 ]+ d
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...  u+ A; l+ {  x
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];- Z- b3 c5 r! J8 f3 o) e' |
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
      # t+ ]1 q5 e( L% e! h$ N8 C
    35. Lx=length(x); %x的长度/ T$ R, H2 S! @5 O4 `* l) G
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      $ R/ z/ I: N' l/ Y
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠3 M: N% }2 \* S: w8 f! p9 p
    38. Ly=length(y);1 {. \2 Y# t* q2 O0 _* j
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      2 Q9 h/ i; v\" q# j4 ]% W) s; N1 S7 c
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      ! R' j/ P2 f1 M, [\" h* B
    41. for i=1:Lx% x! f% b2 O- t' s
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      / m( o' Z! N7 L/ @
    43. end
      ' B* Y; A; G* N
    44. for i=1:Ly. i- G  ~. M  D4 a7 Z9 }, x+ x
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
      . J+ x6 F+ z+ O9 y5 g
    46. end
      & k: p$ K7 q& Z$ j\" ?) m+ }. G
    47. hold off;
      : I( m* v- N; V: S0 e# N, h
    复制代码
    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-7-12 05:23 , Processed in 0.473947 second(s), 55 queries .

    回顶部