QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5152|回复: 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 编辑 ; X& v4 G6 r' s) j. G

    + V9 h3 H, {: ~+ c今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)1 N9 j4 M$ O$ p) d( c' a
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      % T, @( K% ~% s* T
    3. error('??? 输入参数个数不对');
      1 H! W; I* I5 C2 @9 F0 N. y* P
    4. return;8 Q8 X, [0 H9 X  Y& E
    5. end! H9 P4 J9 ]. G+ ~, Z% [
    6. figure;
      8 V) [# P3 L1 e3 i- ~
    7. plot(x,y)$ n6 k$ O' ], u
    8. set(gca,'xticklabel',[])%不显示x标注
      # u/ G) e# Y' n0 J7 m4 e, W
    9. set(gca,'yticklabel',[])%不显示y标注/ }( O. f. w1 b. v0 X
    10. c=get(gca,'color'); %获取axes背景色$ d: x9 u+ r% S) Q+ L\" J* C
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
      % O7 S% i8 d\" l; e7 T4 b% b
    12. grid on %加上网格
      : J' ]8 h3 o0 s
    13. if nargin==4
      5 @7 o2 a. e: o
    14. set(gca,'Xtick',Xticks); %设置Xtick8 Z$ j- f. f3 J8 D+ p
    15. set(gca,'Ytick',Yticks); %设置Xtick/ o( k/ U- j$ B
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围3 R4 e( K! r1 U* A, y
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围& o& H( r( U* i7 i
    18. end( ?9 I* o0 J& J0 b3 o4 }) v
    19. x=get(gca,'XTick'); %获取Xtick
      7 t: X, t7 B( C
    20. y=get(gca,'YTick'); %获取Ytick- W0 r- j: B8 E  Y0 H
    21. xL=xlim; %获取X范围
      - [( c6 B5 p% k: N\" V
    22. yL=ylim; %获取Y范围2 e* l) W: @' g# C5 F
    23. xcenter=mean(xL); %X中心) `! s& ^: Q4 |
    24. ycenter=mean(yL); %Y中心
      & e2 _\" n\" |' z2 A1 g. b
    25. xrank=xL(2)-xL(1); %x跨度
      . Q6 a& G- E- Q/ f* l) t# Q3 K
    26. yrank=yL(2)-yL(1); %y跨度
      2 b+ d6 k7 P  G1 y) i, m
    27. hold on;
      ) M4 _% Q\" s' R# g1 d; ?
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴3 r- `% |. r3 u- O' Z7 P\" [, o
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
      3 g) x7 c& D8 ]. Q
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
      * t; C4 K% @2 r/ S. \
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头4 u3 i( A\" T1 O. L7 G0 o+ D\" I( a
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...4 W: E: ?1 ?9 w6 B
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
      # I5 q- K3 }. F/ f  E: s\" _
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
      4 W9 q% I\" L' t+ \
    35. Lx=length(x); %x的长度3 L9 ~& r  L0 p- k) J
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...; t\" l8 y  _' F% g! ]3 Q
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
      1 I7 Y\" R5 o! V2 P1 P1 j
    38. Ly=length(y);5 c8 a+ ?8 Y% ~% G; ^
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...  C7 v8 m$ a# w: B: Y: y
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠: X5 w8 X& Q, M, D, z
    41. for i=1:Lx
      & n$ Y( L8 U/ L' l
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      ( e) P3 Q8 y( O8 l* O' S
    43. end3 h8 [' O# X8 A- e. g
    44. for i=1:Ly
      1 z/ B. t' K; }
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注* m$ t8 g1 \2 G9 ]
    46. end
      & f' b\" b8 P0 f/ ~2 ~! b( a
    47. hold off;1 {8 p; O) O) F( g, V$ ?; h
    复制代码
    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:59 , Processed in 0.786338 second(s), 53 queries .

    回顶部