QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5060|回复: 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 编辑 5 e+ @" m, a$ X! ?9 ?

    % T8 s: N# P+ v" W" k( ]今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9
    1. function plot_to_center(x,y,Xticks,Yticks)
      0 h0 ^# b% v1 p6 G  n
    2. if nargin~=2 & nargin~=4 %输入不满足要求则报错
      * [! n, z. a& W( `' N* G
    3. error('??? 输入参数个数不对');& |5 H) \) D- Y. Z9 W
    4. return;
      : i4 K) f. x5 {
    5. end
      % s% j- h7 [8 k# K- Z! c
    6. figure;( N7 B0 b( z* O% A5 s+ ]) \
    7. plot(x,y)+ `1 }  O! y1 C1 s# ^8 V$ S/ ]! \+ [
    8. set(gca,'xticklabel',[])%不显示x标注
      0 Y+ i! o( ~8 o2 d. P3 M
    9. set(gca,'yticklabel',[])%不显示y标注
      ' u. N3 \9 j: [5 i) `1 K$ W! g6 i
    10. c=get(gca,'color'); %获取axes背景色
      3 S. \' A( j1 }2 N; l: L) g7 v
    11. % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色0 b6 w5 P0 Y4 M' [6 c
    12. grid on %加上网格, Y\" S\" {- T* K( [' ^6 O( n
    13. if nargin==4/ R& \- }. H* e0 l5 Z2 u8 H4 |
    14. set(gca,'Xtick',Xticks); %设置Xtick
        I  C  Y, ?0 J: u) m9 c2 x
    15. set(gca,'Ytick',Yticks); %设置Xtick+ }4 S/ G5 I& V. H
    16. xlim([Xticks(1),Xticks(end)]); %设置x范围
      0 ?. F# p2 A* |
    17. ylim([Yticks(1),Yticks(end)]); %设置y范围
      : i2 p; V3 ^) |* m# [
    18. end+ p$ |5 b/ X8 R
    19. x=get(gca,'XTick'); %获取Xtick
      0 \& K* @* n5 c2 n. c% N2 p$ N
    20. y=get(gca,'YTick'); %获取Ytick5 [1 z8 F* C6 y7 i/ T
    21. xL=xlim; %获取X范围
      ! h7 j9 t3 {! U! b8 X9 L
    22. yL=ylim; %获取Y范围
      & Y\" P, Y5 ]4 g
    23. xcenter=mean(xL); %X中心
      , ?% K* ]. P9 K7 D& C- s! p* y
    24. ycenter=mean(yL); %Y中心2 D2 }( ~* [( O# u# O2 b  p
    25. xrank=xL(2)-xL(1); %x跨度( f4 f% n% c1 D# @0 J$ K* b
    26. yrank=yL(2)-yL(1); %y跨度
      + h& l0 _$ [$ d5 [
    27. hold on;/ x2 N8 b/ i0 `0 a
    28. plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
      5 R) ^: j$ @' V\" t% E, j& G% k
    29. ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...) |3 o% L! k5 h\" Z1 B# }( K
    30. ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; 4 P, T) M9 T7 s1 V+ I0 s' W. q
    31. fill(ax(1,:),ax(2,:),'k'); %画x箭头
      4 S( ]8 a2 C5 n! W! n
    32. ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
      . T! I( e. M* X# C0 a6 r\" [7 y
    33. max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];+ L2 w7 D, {5 Q0 V
    34. fill(ay(1,:),ay(2,:),'k'); %画y箭头; t' _0 H. w$ q6 f
    35. Lx=length(x); %x的长度# C+ N& T. d% Q8 X8 |2 i
    36. plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
      1 u( X8 W$ g6 b* i8 j$ M: d
    37. ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠7 I7 m, }; X1 q) J$ X
    38. Ly=length(y);
      ( Z. o, i\" K; S5 p, O/ m/ V- I
    39. plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
      2 L4 x; O' e; V) p7 y
    40. repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
      4 @9 D9 C' M1 O( a
    41. for i=1:Lx
      ! e\" {3 P! R- m
    42. text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
      & F8 {2 _5 t0 @6 a  c
    43. end3 O. Y8 X6 n9 Z, Z% v0 m
    44. for i=1:Ly
      2 x3 x# Z4 S7 s% Y0 E\" Q$ ]
    45. text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注/ j5 P9 l5 h5 ?9 n1 m3 m) X
    46. end  y& y. y7 J5 x' J7 Z3 \
    47. hold off;
      ( {; V% K8 ~* a2 E% C$ j* R
    复制代码
    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-14 15:00 , Processed in 0.432346 second(s), 55 queries .

    回顶部