QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5151|回复: 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 编辑 % l0 ^1 L3 w4 r- e% M5 u
    ; h( D0 p* W  k
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      . B5 V- S6 y/ C7 F- v/ W7 T/ t/ \
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错1 N( R' [2 d7 u' ^7 B' v
    3. error('??? 输入参数个数不对');& c4 r* @9 i2 e9 t$ S
    4. return;! c% S' ~2 w& z) L) R( Z\" T) V
    5. end
      * \# j) W1 `% P' h: e$ D
    6. figure;
      4 b\" |; Q% K' d/ h0 y* G
    7. plot(x,y)
      5 j) y5 X3 G  M0 ], ?7 s9 [- i
    8. set(gca,'xticklabel',[])%不显示x标注
      # g7 f6 u* a' d5 y3 W( [
    9. set(gca,'yticklabel',[])%不显示y标注# D. P2 l' X$ c7 U4 T8 \5 W
    10. c=get(gca,'color'); %获取axes背景色
      $ t\" f\" l  _  h+ Z
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色& u3 C2 Z2 d\" f) r/ k; w; H& J5 i
    12. grid on %加上网格% R5 I7 S, |. F& ]
    13. if nargin==4. P0 y: j* j4 J4 x  K8 o5 q, l
    14. set(gca,'Xtick',Xticks); %设置Xtick; H3 t7 k! T* u8 r9 U! z2 ~( ]
    15. set(gca,'Ytick',Yticks); %设置Xtick
      / ~& ~: u  E0 N% I! e
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      8 m+ R5 |/ ~4 |# [- w
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      : P) m- x1 Y. Q\" b: M; w! h
    18. end
      . x0 r% O3 O, E. c& _0 H2 v
    19. x=get(gca,'XTick'); %获取Xtick) u# S8 B; v$ a% L
    20. y=get(gca,'YTick'); %获取Ytick
      1 n- R! \. a8 T
    21. xL=xlim; %获取X范围
      ( I1 N% J7 ^7 _. U\" n
    22. yL=ylim; %获取Y范围2 m: z& {2 S. Y( x4 B% z
    23. xcenter=mean(xL); %X中心
      ' w- l9 r2 Q/ Q  v# K
    24. ycenter=mean(yL); %Y中心
      : ?4 B; a+ m& T9 q
    25. xrank=xL(2)-xL(1); %x跨度
      \" u  s  }1 ~+ k8 [- Q% O, N: _
    26. yrank=yL(2)-yL(1); %y跨度9 w# Q0 v' g/ z
    27. hold on;
      3 L8 f) @0 i+ k4 x# |
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴  X5 |3 a& n4 V/ U. D; Q. |
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
      : ~# m0 ]1 b5 b* T: S* r
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; % `- A/ H- I8 J) X
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头0 [/ q8 |/ ]\" {, O- d
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...' `, F. h) j# H! g, C+ C2 `0 t
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];* d+ K# R+ |& Z: e
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头' p+ `5 E7 e8 S  [  W) R
    35. Lx=length(x); %x的长度\" W2 F+ p: {7 Q1 |
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...; c' Z3 D9 w% n* j5 Q
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
      # z) ?% d7 H; _# G! e% |
    38. Ly=length(y);
      2 l1 ^+ v4 W3 u3 W2 \6 ~
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      . q9 f' m* W! E
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      2 Q/ m7 v0 {! \: H6 l* ]7 X* x
    41. for i=1:Lx' u  a5 A* b+ }5 E) L
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      9 b2 c( w+ R( B\" Q; J
    43. end) Q2 A( \5 A* K) F& x' [
    44. for i=1:Ly5 o8 K1 F) P5 ], ^1 ?
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
      3 k; X: h3 P! m/ E2 z# c5 G' ^# N
    46. end- ?9 X! t8 q0 R1 x0 ?
    47. hold off;' U/ t- ^# e0 a! @; R
    复制代码
    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 09:07 , Processed in 0.422013 second(s), 55 queries .

    回顶部