QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5142|回复: 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 编辑
      D6 Q$ u' t6 _" J: d; ?! P5 Y
    $ W; m  a7 G# @) D. b今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      1 k\" s. X1 X& M# t3 P
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错; Z$ \% p$ L( U# P; [
    3. error('??? 输入参数个数不对');' T/ \: A8 s5 i! j0 B
    4. return;3 l  Q6 l# H+ h! T; U4 q
    5. end
      ( l6 H. d) R' `
    6. figure;) S6 m4 P5 B0 r* P3 {' w# s
    7. plot(x,y)8 S3 @/ y7 h% k5 `# S; Z/ @
    8. set(gca,'xticklabel',[])%不显示x标注
      7 B  I8 i- C( u8 K6 e6 q# A
    9. set(gca,'yticklabel',[])%不显示y标注2 N5 x. H. E: b, p\" p2 h+ u0 k: h
    10. c=get(gca,'color'); %获取axes背景色& e9 h$ I# l, A2 y5 \8 Z
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色7 A; P. Z3 V* z8 x' q. t
    12. grid on %加上网格
      7 L6 h3 m* |3 \# Q
    13. if nargin==4
      7 w  a9 L! f' }( B9 P6 m/ w, I
    14. set(gca,'Xtick',Xticks); %设置Xtick6 q1 s' x0 v+ l9 S3 R9 [
    15. set(gca,'Ytick',Yticks); %设置Xtick
      7 k) g4 R  B1 t\" R
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      \" H. I6 Z. L2 d# V' j/ x8 z\" L
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      ( t8 V' y0 |7 }7 p7 _2 v! d
    18. end, O6 K- F: M6 P8 s3 e; V
    19. x=get(gca,'XTick'); %获取Xtick. Y+ d) d0 n7 K9 }5 Y7 i$ |& c
    20. y=get(gca,'YTick'); %获取Ytick, V$ a  S, y% m( s
    21. xL=xlim; %获取X范围/ h' [/ O2 l/ ~) Y1 Z! m( ?
    22. yL=ylim; %获取Y范围* z+ ]8 z! ^2 J+ ^+ f$ s
    23. xcenter=mean(xL); %X中心6 V4 T. I. I0 }+ v1 s
    24. ycenter=mean(yL); %Y中心
      0 p) X' q2 \0 W1 x2 |7 Q
    25. xrank=xL(2)-xL(1); %x跨度
      ! c% m5 x3 z2 E4 I4 D! a$ c
    26. yrank=yL(2)-yL(1); %y跨度. U3 H6 |: y9 j! S
    27. hold on;
      : E7 |+ U0 A: `$ l3 T+ K& R
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
      5 x4 p* a1 n; V: w\" |) m6 P* @
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
      3 a  @8 i) l% R5 D* V
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; ( k4 G\" @6 m' Z' Q$ S* x
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头
      4 }& Q6 {3 A+ X& S. W
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
      % }7 x- T' p; f& `8 r( z0 Z, z
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
      : R2 ?  d5 r  k\" d1 w
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
      - p$ n! S0 b  k/ S
    35. Lx=length(x); %x的长度
      9 Y% i0 N3 G7 f) ^
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...3 U) M! H( u/ q, J% ]& T4 d
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠# ]2 r3 T* l' Y& r
    38. Ly=length(y);
      5 T& {& n6 ~1 u% t- t
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      \" c4 e0 R2 C/ ~2 R& u* H# z% ?2 O2 r
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠$ O7 k\" X' a' e! O- Y) L. t! k( ]
    41. for i=1:Lx
        L8 B# r. u% q1 b, W
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注8 @# E1 a* M- o- J\" }; i
    43. end
      % {1 y$ S/ K$ a* L9 N/ H
    44. for i=1:Ly
      ) ]# K& V/ }& i7 K
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注8 Y  r\" ^1 D8 U. \7 W
    46. end. G) U9 D; y' k: k: O2 u2 _
    47. hold off;: h* v) V) N/ O
    复制代码
    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-8-26 09:10 , Processed in 0.484348 second(s), 54 queries .

    回顶部