QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5056|回复: 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 编辑
    9 T* g% b3 U9 v
    3 y) [+ v5 m! h% E) |- Q今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
        j: p. ?9 K\" T3 w8 i
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      4 }% u9 {/ ]. I1 }0 k7 a* F
    3. error('??? 输入参数个数不对');9 |, B4 ?( m% n) [3 Y) I
    4. return;
      7 T# J! b( j3 }/ o/ f
    5. end6 z% t0 r! ^) U# f+ i+ e
    6. figure;3 S' `5 ?* a, Q) d( |\" F
    7. plot(x,y)' z$ u, D\" }6 c' I( m  P
    8. set(gca,'xticklabel',[])%不显示x标注
      4 a5 K3 P/ \8 y$ k
    9. set(gca,'yticklabel',[])%不显示y标注4 _$ t  t0 Z0 T- @& N4 w
    10. c=get(gca,'color'); %获取axes背景色. T4 G# R5 F; L) W
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
      # p9 Y8 o. Z5 K7 w
    12. grid on %加上网格0 u) I8 h& }6 }7 o
    13. if nargin==45 I- _8 S, O; h1 r4 c; V8 N
    14. set(gca,'Xtick',Xticks); %设置Xtick
      ; }) @; {7 W  }
    15. set(gca,'Ytick',Yticks); %设置Xtick( U+ K  l$ Y( t: M$ [  U, C
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      5 Q! {+ K' k( u2 {& d
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      3 y3 J6 b& u! P. m$ i
    18. end
      4 ^+ I$ K6 D/ S* ^/ ?
    19. x=get(gca,'XTick'); %获取Xtick
      ! c0 J* I3 P+ ]4 \
    20. y=get(gca,'YTick'); %获取Ytick
      5 B' P1 l. U* I( D- D
    21. xL=xlim; %获取X范围
      - p& @0 r7 {: S+ |+ E+ L7 w, L
    22. yL=ylim; %获取Y范围
      9 z' I2 o+ h% h/ ]6 `
    23. xcenter=mean(xL); %X中心
      8 m# O9 \! _! |: a: z7 i/ a0 U$ r
    24. ycenter=mean(yL); %Y中心- U% U1 U0 t5 P' ~3 x# r
    25. xrank=xL(2)-xL(1); %x跨度
      2 j% Y( h4 N4 v) p
    26. yrank=yL(2)-yL(1); %y跨度
      7 H' y. R* n0 z: Y\" _5 r
    27. hold on;4 ^# j& x6 v) U$ U* Z6 ~
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
      \" `6 I\" C' B: e\" H9 Y\" L
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...; n! o$ h3 J7 H5 u4 Q
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
      ; u) `/ y+ h- H6 U# U
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头7 e7 ^/ g1 y\" ~3 R$ [
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...6 f( P* ]* \0 E* U3 P: P1 f
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];7 ~! ~+ M; e& ?4 J9 v1 R
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头, P, c\" r* U/ ~! g1 X. q7 n7 I
    35. Lx=length(x); %x的长度
      . o( R2 y9 {% r4 P; f% ]
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      0 h2 o6 r: x: g5 C/ R
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠3 V* k  J6 k- O! B! z( j- X
    38. Ly=length(y);
      / @9 o* i$ w* _
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      2 B0 ?& c0 c\" ~& k: h; O3 ^
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠  W& X; C\" J1 Y\" m0 u% j' I- D
    41. for i=1:Lx  A# ?) a( ^. ]5 k& G7 ?: O
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注& ]1 w- R5 f& k' g7 j0 N
    43. end
      % P$ P; O# Z\" E7 p1 i
    44. for i=1:Ly
      % l\" d6 q4 {0 u: D+ M9 Z+ p
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
      + C4 \# \* ]; t0 _
    46. end
      . B2 T* i: ~+ o5 U( }( j# M
    47. hold off;
      : x- ~5 M\" \3 T) {5 L
    复制代码
    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-4-12 09:11 , Processed in 0.394306 second(s), 57 queries .

    回顶部