QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5195|回复: 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 编辑 4 P2 s1 w8 G8 y: B
    ! R* r  y. ^  W! i! H
    今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)6 W\" s\" A0 c7 S5 T) u% G
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      6 q5 c6 J/ [9 }& `\" V
    3. error('??? 输入参数个数不对');- d  Q8 l/ B) @- X  u
    4. return;
      % A, j1 q\" _2 Q# d
    5. end
      ! L$ ^\" R8 \4 K- l
    6. figure;4 r5 o( z$ ~: I+ a  Y
    7. plot(x,y)& S, ?5 C8 y7 X9 Q# ?! w' I
    8. set(gca,'xticklabel',[])%不显示x标注
      # ?& k! P; C9 h- L. e% V
    9. set(gca,'yticklabel',[])%不显示y标注, a8 ]: X* X3 d2 B5 k
    10. c=get(gca,'color'); %获取axes背景色. F( h3 N! u# f1 ~+ @
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色0 T6 T& n; G# u- H/ }7 {8 G! A
    12. grid on %加上网格
      6 X* C9 Y\" l* p8 C9 ~0 G\" j! q9 G
    13. if nargin==4
      ) `4 o. f6 b$ L
    14. set(gca,'Xtick',Xticks); %设置Xtick  L& @1 ?/ U; l  I  a# D\" a
    15. set(gca,'Ytick',Yticks); %设置Xtick  _/ M' {! l- D2 \$ F: M5 h
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      7 r- o# \, n2 P* Q) T
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      \" W3 v0 Q: h# y
    18. end
      4 D- W( M4 Q& C5 Z! \2 O
    19. x=get(gca,'XTick'); %获取Xtick
      ) `5 d& Y; ^\" w0 z! e- C1 z
    20. y=get(gca,'YTick'); %获取Ytick1 I( W! ]9 z# B\" ?+ Y
    21. xL=xlim; %获取X范围0 v9 f; t3 F+ T& k+ [7 E
    22. yL=ylim; %获取Y范围  n# [! N! h& Y8 n4 k! t
    23. xcenter=mean(xL); %X中心1 j9 F, h0 F8 Y( P
    24. ycenter=mean(yL); %Y中心
      - _; X* g7 M, P
    25. xrank=xL(2)-xL(1); %x跨度7 ~* {' v: _2 q9 n$ z  `8 R
    26. yrank=yL(2)-yL(1); %y跨度( x: N2 l$ [) R) h4 z4 {$ P3 W4 @
    27. hold on;, u8 R; o7 \8 m9 x! k0 D\" a0 X
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴- B# u/ w, E7 i: g* `4 H- n: R
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...8 k' X7 n+ t# s* L9 V; H
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
      : X$ `; v6 [1 A# O6 T; S. q
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头5 W3 |  W# W# x\" C5 h* y
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...3 w\" b3 n) H& z; V
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];8 f% M$ ~. w3 l  b! [0 ?4 o
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头. j/ m# J. S+ {/ {
    35. Lx=length(x); %x的长度. l& W( U  G9 t& w
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      3 }, o5 S3 S* g1 }% b& q; P
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
      0 E0 I* Z0 y6 }- f' W) \: K
    38. Ly=length(y);( B! @( r4 G\" y
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...  a9 X& {* |+ h4 A, p
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠* B% |6 ^- |+ v\" X# B+ K
    41. for i=1:Lx8 }8 x0 y0 L! N1 ^
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      & {* S; a4 ~# p1 ?$ f  b, G
    43. end
      5 q4 S, y5 Y; E\" Y, U( n5 e6 G
    44. for i=1:Ly8 _8 v: ]' w  M7 r8 N+ I# ]% H
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
      # p+ f' Y* v* B6 b
    46. end\" J7 \2 O5 R% W% E0 |  S3 [
    47. hold off;
      . d+ |/ V. @# s
    复制代码
    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-10-24 03:01 , Processed in 0.730859 second(s), 54 queries .

    回顶部