QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5111|回复: 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 编辑 : z6 N; S1 j% x: H4 S. I
    8 j  N8 P  _, }' H
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      1 H  X7 [& l% u\" m5 V) K
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      1 z, e8 `2 k2 l$ O$ ^' z
    3. error('??? 输入参数个数不对');
      # X+ f+ k# t5 C5 }$ _8 H
    4. return;
      9 W1 C# X) B\" v7 l* V& G& e
    5. end6 }; _2 N' {; V! }9 e% Z) J
    6. figure;, ?% j( g6 \6 L0 J) D- E3 b9 l
    7. plot(x,y)! ~5 J. H, [! d! D/ v
    8. set(gca,'xticklabel',[])%不显示x标注1 |& I2 [, q% ^6 G
    9. set(gca,'yticklabel',[])%不显示y标注
      1 {0 v$ p3 B8 ]( d0 O
    10. c=get(gca,'color'); %获取axes背景色0 l  J1 y  x) h/ ~! W/ R) @
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
      1 v! v- g2 C4 P4 v\" l2 E
    12. grid on %加上网格
      - e) x' V+ Z  }4 Q# k
    13. if nargin==4* H1 A- y) p0 E, P# _8 W+ G% I
    14. set(gca,'Xtick',Xticks); %设置Xtick
      ! R: C6 t: o2 O3 m/ ^1 V* s6 X
    15. set(gca,'Ytick',Yticks); %设置Xtick
      & R0 |% X, Q0 U8 ?! C5 o# @% @
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      6 v8 d$ E6 v2 K
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围' Z3 H+ p. a/ P& _: i
    18. end+ c- S, `4 x! `6 S; W/ C
    19. x=get(gca,'XTick'); %获取Xtick
      . n5 b* o) N8 M7 _1 {/ f
    20. y=get(gca,'YTick'); %获取Ytick+ T, V1 ^\" Q; \\" K
    21. xL=xlim; %获取X范围
      : U% T. {\" b, y# v6 X0 f
    22. yL=ylim; %获取Y范围% h0 y+ U5 f/ z8 N- _2 c$ O% x
    23. xcenter=mean(xL); %X中心
      1 Y' L3 i9 F8 C6 J5 `
    24. ycenter=mean(yL); %Y中心. z7 ^! m3 @% P7 y
    25. xrank=xL(2)-xL(1); %x跨度$ H: s! C* D. b: p6 K- y2 O+ N/ s
    26. yrank=yL(2)-yL(1); %y跨度
      # K7 z6 h\" ^6 u
    27. hold on;
      3 Z: E1 C6 J% B+ [' s2 i
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴/ e, _# I8 c; z( `& I
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
      6 K! I& `; E! o) ?5 I6 Q
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; ( N, a4 g  {: B' S
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头
      / u& h; h/ F8 e( T2 U: @  @
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
      7 d: Y8 y* H! n9 x9 s; I% N! q* [
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];& L0 g\" h' q, j$ Z
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头\" c( }  Q. _( S7 j. F
    35. Lx=length(x); %x的长度
      - f. @( L8 ]0 ?1 v
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      - a9 Q# q) Z8 M5 ~( N( p
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠7 o) }6 ?$ O# ^6 k2 [$ L
    38. Ly=length(y);# O, l1 b! O4 w' z
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      ( U; |7 H\" d\" V, `6 m! I4 G
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      7 f4 w1 `$ T- Z  t7 }% Y) a; {
    41. for i=1:Lx( w! E) q2 U2 S: t: I. O  e' X
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      7 k\" F2 [/ {( g- D
    43. end! d  C( q7 g3 x( `) u( u
    44. for i=1:Ly
      ! h+ L! ?, A. U' Y. s7 L
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
      : F, [8 f9 \9 a' {8 S
    46. end7 \2 Z2 E( {6 Q5 b- i\" E
    47. hold off;0 ]* L6 L* ~; }: y7 q
    复制代码
    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-7-11 11:27 , Processed in 0.530266 second(s), 54 queries .

    回顶部