QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5153|回复: 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 编辑 & k- [% z9 D/ q0 v: x8 O' c

    0 o' f  s& a" Y. l今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      8 c\" b+ J# ], F% ?. m& k, c
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      1 J: E/ n0 X: t7 b  U- e+ _
    3. error('??? 输入参数个数不对');
      + ~( R, g# S9 `7 G
    4. return;
      , x: H( F* S1 z1 r1 H
    5. end, x! E9 i\" a3 @& X' X2 z
    6. figure;/ Z& S  G\" _) @1 S$ p! n
    7. plot(x,y)\" E9 {6 ^1 `; V/ A8 i
    8. set(gca,'xticklabel',[])%不显示x标注( ]0 j: _5 n5 t# \4 ?7 U
    9. set(gca,'yticklabel',[])%不显示y标注
      0 M0 C5 K/ [\" E, r$ j
    10. c=get(gca,'color'); %获取axes背景色! E1 J3 n' @* o/ {' a* C3 j\" Z, N
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色9 ?2 P- T* K1 X7 D' b8 C$ t
    12. grid on %加上网格
      $ z) K# L$ S8 i5 c
    13. if nargin==4. b. V1 O+ M+ h! J
    14. set(gca,'Xtick',Xticks); %设置Xtick
      ' @+ z0 d: o) @% R
    15. set(gca,'Ytick',Yticks); %设置Xtick
      # @2 y7 `\" T\" z; @# b\" [
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围- j4 s4 p1 n7 e9 M
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围) N4 i, ]$ S' W) ?3 r/ P
    18. end
      9 o! Q) P\" h* j5 g\" D& I' g7 |
    19. x=get(gca,'XTick'); %获取Xtick( {9 o6 |0 `4 U) H0 Q) N\" i% P/ g
    20. y=get(gca,'YTick'); %获取Ytick& x6 }3 x\" ]/ e' d& k0 t) ^! Z( g
    21. xL=xlim; %获取X范围
      . H& i# t( m) B( {* n  s
    22. yL=ylim; %获取Y范围# p$ `8 V. L3 x% H+ T) r
    23. xcenter=mean(xL); %X中心! n% [( ]  S. Z% N8 |7 Z+ U+ R/ E
    24. ycenter=mean(yL); %Y中心
      ! D1 y0 v6 O, T  J
    25. xrank=xL(2)-xL(1); %x跨度
      4 A. G1 @% `' f\" u; ?
    26. yrank=yL(2)-yL(1); %y跨度
      7 V3 V' W& B9 r2 T5 j
    27. hold on;  V' n' i4 ?5 V2 l  p/ V\" }
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
      5 O1 s4 \  m4 D0 {/ ?0 V: j
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...( {8 e0 s$ k/ f- M\" l
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
      0 H6 v\" R+ J- e\" f
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头- i8 `0 T0 u% F/ ~4 P
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...* i\" u6 ?  ?. k# S\" G  S$ ]  b' d9 M
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];* i! {0 a. [* ~7 M
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头0 q) V7 F! C* y7 S
    35. Lx=length(x); %x的长度
      ; g$ f% x; d+ k. F, L& r2 x
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      5 H) {- m3 q4 M/ Z3 i% e: Y
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠# s5 |& d  k+ F+ Z% c
    38. Ly=length(y);9 e. x( R  B5 C: W
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...% M2 x\" o- n! l8 c- `3 y) i
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      8 s$ Q4 W: y% }
    41. for i=1:Lx8 K\" b9 ~/ s% t  i* S* V
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注9 o3 |6 R$ v\" ]/ C/ M' D
    43. end\" |, B5 L% _# m1 c
    44. for i=1:Ly. V- u; H; }( I
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
      5 H1 o% H2 g\" X4 Q+ W% a
    46. end
      8 o7 u, m% H8 _; d5 k
    47. hold off;
      ) o+ D% d+ e& Q6 {3 N
    复制代码
    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-9-2 11:13 , Processed in 0.456065 second(s), 55 queries .

    回顶部