数学建模社区-数学中国

标题: 关于matlab画十字坐标 [打印本页]

作者: mudan    时间: 2012-10-31 17:16
标题: 关于matlab画十字坐标
本帖最后由 mudan 于 2012-10-31 17:20 编辑 " O% X; r! T+ ?2 ?& Z1 |
3 w/ `7 c8 p9 S( b4 L) v
今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
  1. function plot_to_center(x,y,Xticks,Yticks)
    6 p& ^4 Y0 a( ^: n7 A
  2. if nargin~=2 & nargin~=4 %输入不满足要求则报错8 `% [! K9 {- o6 p
  3. error('??? 输入参数个数不对');; V' }9 u' Q2 x8 ~! W
  4. return;
    8 m) i9 l# ^8 c  U+ f0 j: {
  5. end
    0 _1 Z' [8 ^- t( n; W
  6. figure;
    ' M# B7 x3 }5 J! A9 d. l
  7. plot(x,y)
    , ]( S/ R- |6 X( ~
  8. set(gca,'xticklabel',[])%不显示x标注9 J8 K* k$ k& t
  9. set(gca,'yticklabel',[])%不显示y标注
    ) P! O6 O5 b) |+ y
  10. c=get(gca,'color'); %获取axes背景色# W! S  O8 s! M# v. l) x
  11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色( b! C* M+ K0 N) u$ W2 r$ H
  12. grid on %加上网格
    . A# u2 V# s/ q; m) w$ [: h
  13. if nargin==44 h+ z4 H  O$ A  G4 [  ?
  14. set(gca,'Xtick',Xticks); %设置Xtick
    # ?/ p; \" ^' i' N3 L. g: M1 x
  15. set(gca,'Ytick',Yticks); %设置Xtick. p/ k7 v, a. I6 q
  16. xlim([Xticks(1),Xticks(end)]); %设置x范围
    $ k# p. K4 T1 m
  17. ylim([Yticks(1),Yticks(end)]); %设置y范围
    $ Q4 |, ?, @" Q7 F
  18. end* A2 c. k1 x4 C6 I
  19. x=get(gca,'XTick'); %获取Xtick( E3 W8 Z0 e& v1 B/ p
  20. y=get(gca,'YTick'); %获取Ytick
    2 a+ g# ^( k% f5 \" b- X4 P
  21. xL=xlim; %获取X范围& u& ]' m+ t6 E8 ~, F7 V
  22. yL=ylim; %获取Y范围: F, l9 @! M: u
  23. xcenter=mean(xL); %X中心
    # a; M: h: d, V7 ~0 A
  24. ycenter=mean(yL); %Y中心; S0 u" w2 q8 C& M& _% l5 n
  25. xrank=xL(2)-xL(1); %x跨度
    $ \( A1 p! Q8 X5 h
  26. yrank=yL(2)-yL(1); %y跨度
    & p$ G" _6 r% B
  27. hold on;
    & D/ W% B/ }0 ~& M! M
  28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴3 S. Z# J, F1 X9 ^
  29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;.../ W9 A8 L) x* b3 f
  30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; ) C& C5 L/ J6 S3 f1 h
  31. fill(ax(1,:),ax(2,:),'k'); %画x箭头
      B4 G7 H& [& e% t2 H* @& s
  32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...; c* [4 u. h* C: f9 T' a, Q( T/ X, t
  33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
    ' v# H9 E0 x  Q' x; w" P- i/ z3 H: E
  34. fill(ay(1,:),ay(2,:),'k'); %画y箭头
    5 A- ]* C% h  f# I5 a
  35. Lx=length(x); %x的长度. O" K# w( m  @; W6 f0 s$ M5 [
  36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
    " X6 K! O5 M7 R! y6 v% t+ {
  37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
    " T4 a; h* c5 p) `* k0 d6 D
  38. Ly=length(y);
    ; {8 Y/ f# u3 P9 T+ U( _
  39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...) ?2 d( g6 {$ t, {$ n
  40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
    ) O5 g4 G) |% `/ k& R5 T
  41. for i=1:Lx# n# C; K9 E5 j  h
  42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
    % w9 L) W, v, C
  43. end! W" B( W) }3 b- j
  44. for i=1:Ly$ A: U! j" Y- T0 S1 n" J
  45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注" ?/ E" u1 [/ Y) N- ~+ l
  46. end% b  q$ ~6 n0 A; n
  47. hold off;/ r- y% G4 P1 M. u- j- z' H$ O0 O$ ~
复制代码





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5