QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5096|回复: 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 编辑
    - _1 x3 m5 T- M4 q. ~
    , T, E8 x  J9 p' R今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      $ ]' n! I, {9 a- l2 G8 A
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错' {: P. J: f; c1 }( N; }7 F# R
    3. error('??? 输入参数个数不对');# A0 B8 D: N3 t  W# u% u% s
    4. return;8 F8 K\" U9 x# @* [& G4 \& k
    5. end  Y8 z  Y, O+ g4 y
    6. figure;
      6 R+ I) j% U- R- L8 Q
    7. plot(x,y)6 s$ [& V: X; J, Y
    8. set(gca,'xticklabel',[])%不显示x标注
      : V  G6 R. w& V: L& z
    9. set(gca,'yticklabel',[])%不显示y标注
      % v* @& R. O5 }
    10. c=get(gca,'color'); %获取axes背景色+ q% }2 _. ?! u
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
      ' [+ r) T( @( f$ v
    12. grid on %加上网格: x, c( v* C/ D$ ~% m! z; B' U
    13. if nargin==4# E! N5 e- S! j9 E/ ~4 r
    14. set(gca,'Xtick',Xticks); %设置Xtick1 D1 y1 W, X3 j8 J5 |
    15. set(gca,'Ytick',Yticks); %设置Xtick
      9 B% x3 x6 p7 ^( c6 X& a/ p
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      4 l9 T; @; A! Y$ j6 }& B
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围) ?8 N* L/ x9 \2 R( G8 F$ Q( j8 y
    18. end! C8 e9 S0 c; R& ~\" H1 m* f$ f) Z
    19. x=get(gca,'XTick'); %获取Xtick
      ( y7 F8 @0 e6 z: P
    20. y=get(gca,'YTick'); %获取Ytick4 \9 I! u8 v- t' g\" b' m' e
    21. xL=xlim; %获取X范围
      - p0 j6 _3 L# v/ U2 B
    22. yL=ylim; %获取Y范围8 u& E0 P\" a5 f5 F! F; ]
    23. xcenter=mean(xL); %X中心
        k2 p+ z\" o( e: b0 G% ~, W
    24. ycenter=mean(yL); %Y中心
      7 b' W  s' P% T' x
    25. xrank=xL(2)-xL(1); %x跨度7 E9 N7 {+ |. ?2 O/ M
    26. yrank=yL(2)-yL(1); %y跨度
      % ~* j: [  x+ g* O+ @0 b
    27. hold on;
      - e1 b2 f* H& G\" `' h
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
      / t  ^, `& u9 e
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...+ H3 v7 `. X2 e
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
      9 d- `5 I' J- J6 i
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头
      4 f/ G) |3 r\" Y# ]+ {
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...\" ^\" Z& ?# _* S) F3 B
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
      * @4 X1 i6 @$ G. q. ]9 T
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
        o4 \0 i- z$ A: X- S0 J- R
    35. Lx=length(x); %x的长度
      # p9 g9 T' U8 p# I. L5 Q- K
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      ) D. W6 w. w( M! l) O+ I- t
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
      - b3 n* ?  y& j3 F2 [
    38. Ly=length(y);
      6 M1 [/ V. j1 H& p6 t) r
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...8 \% z8 H1 u& P; G+ t- H
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      * S( t# g, G6 J
    41. for i=1:Lx
      $ v$ a- a3 N1 c( r7 f
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注& I, n( B6 ^& ?3 Z, R8 Y
    43. end
      7 M, A# ]) X- K  g4 E/ d% G
    44. for i=1:Ly, t8 C# e7 {7 @* g6 Q: x+ x0 @
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注. o! p+ T4 E9 m
    46. end
      ! v\" b8 @* _7 @: U1 b# B
    47. hold off;
      ( D; }# X2 Q- R  S& n- `0 ~! F
    复制代码
    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-6-18 00:49 , Processed in 0.359906 second(s), 57 queries .

    回顶部