QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5054|回复: 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 编辑
    3 v  C3 G7 T3 `+ M) d% V, P9 [  O# Z- _: p  y  `% A
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      ; g6 z$ i$ m# s5 i! _
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      1 C/ X7 z* o4 \6 d% b! z4 _
    3. error('??? 输入参数个数不对');
      ; o  A: b. M' z
    4. return;
      # R/ `3 j& e0 e
    5. end
      ) {1 u4 S8 N9 {- k) \! [0 B4 U( x
    6. figure;
      3 W( S- h. q' n7 r4 q+ Q
    7. plot(x,y)! q4 \2 Q8 O8 e; Y; t6 B
    8. set(gca,'xticklabel',[])%不显示x标注
      3 P* b, i# H. y& u& Z/ S- ?$ H
    9. set(gca,'yticklabel',[])%不显示y标注6 B' l. T% K& n+ F' m: M6 x, Q
    10. c=get(gca,'color'); %获取axes背景色6 z' E7 K* `\" d4 L# s8 Y, Y; A
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色9 X# @; f* d: S* d$ Q( B  p
    12. grid on %加上网格
      . r- B' |; d% Q, h, {
    13. if nargin==4
      \" F( {& J5 j2 d\" Q- K
    14. set(gca,'Xtick',Xticks); %设置Xtick
      % s5 l4 X7 T; E3 X7 x3 f
    15. set(gca,'Ytick',Yticks); %设置Xtick
      ) s! n& {3 ?. V
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围; W8 T% _8 ~4 A0 r
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      / ^8 t( f8 M6 Z  A) {2 _! z: q
    18. end
      ! m3 ~; Q\" W6 I7 m
    19. x=get(gca,'XTick'); %获取Xtick; D$ l8 L+ o5 z! p
    20. y=get(gca,'YTick'); %获取Ytick
      - A9 ^- C0 s' ?6 U. a- c7 v0 y
    21. xL=xlim; %获取X范围) j3 r0 _\" s: _
    22. yL=ylim; %获取Y范围( s4 ~/ M\" R, }) S1 p
    23. xcenter=mean(xL); %X中心
      : e3 P- q7 E) C
    24. ycenter=mean(yL); %Y中心0 j# e5 P\" D' L
    25. xrank=xL(2)-xL(1); %x跨度
      . f& C# |% D7 R/ z$ k8 L
    26. yrank=yL(2)-yL(1); %y跨度8 p  |% }; C3 ]0 e2 `\" ]3 m6 L  N4 N
    27. hold on;+ f# P0 R4 s  x$ d( ]
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴. O2 Q* z8 ?' ~2 x0 y- U/ A
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
      + N- N4 K3 ?3 ~
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; 8 O2 X\" k! S( ]' B' ~/ N6 [$ s0 H
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头/ ?) F8 _* c% T. Y/ [
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...' a$ {4 C: L8 h+ \
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];. F7 F2 }. `/ R! g
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
      ( E' d# u\" x; e\" J( B
    35. Lx=length(x); %x的长度
        u- b8 H% t8 m5 K1 T6 u
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:.... @- {  s8 E1 m2 G) N, z
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
        x: H( a  J* {* {6 D
    38. Ly=length(y);
      5 A! |+ i1 `- l2 G% C, Z
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...2 L; |+ S$ f/ T  f* U
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      : S, ]7 T( A% i4 \0 z
    41. for i=1:Lx
      9 b2 u) x. H$ J( d
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      / m; o# H, s4 F7 }9 w
    43. end
      ; y9 J1 l( Y% h6 [
    44. for i=1:Ly+ U+ L2 m6 ~; r0 o% |# i
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注9 G7 M# b& f% S: a# r
    46. end0 Y7 ?$ x/ R  v7 z0 x- m2 A
    47. hold off;- |- d& n$ x1 o. r6 e; @% b
    复制代码
    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-4-10 14:53 , Processed in 0.343326 second(s), 55 queries .

    回顶部