- 在线时间
- 160 小时
- 最后登录
- 2020-3-27
- 注册时间
- 2010-7-5
- 听众数
- 2
- 收听数
- 0
- 能力
- 0 分
- 体力
- 2728 点
- 威望
- -3 点
- 阅读权限
- 60
- 积分
- 994
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 409
- 主题
- 19
- 精华
- 0
- 分享
- 1
- 好友
- 10
TA的每日心情 | 奋斗 2020-3-27 12:01 |
|---|
签到天数: 173 天 [LV.7]常住居民III
 群组: 数学建模培训课堂1 群组: 2011年第一期数学建模 群组: 小草的客厅 群组: 科学狂想曲 群组: 学术交流B |
本帖最后由 mudan 于 2012-10-31 17:20 编辑 % l0 ^1 L3 w4 r- e% M5 u
; h( D0 p* W k
今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9- function plot_to_center(x,y,Xticks,Yticks)
. B5 V- S6 y/ C7 F- v/ W7 T/ t/ \ - if nargin~=2 & nargin~=4 %输入不满足要求则报错1 N( R' [2 d7 u' ^7 B' v
- error('??? 输入参数个数不对');& c4 r* @9 i2 e9 t$ S
- return;! c% S' ~2 w& z) L) R( Z\" T) V
- end
* \# j) W1 `% P' h: e$ D - figure;
4 b\" |; Q% K' d/ h0 y* G - plot(x,y)
5 j) y5 X3 G M0 ], ?7 s9 [- i - set(gca,'xticklabel',[])%不显示x标注
# g7 f6 u* a' d5 y3 W( [ - set(gca,'yticklabel',[])%不显示y标注# D. P2 l' X$ c7 U4 T8 \5 W
- c=get(gca,'color'); %获取axes背景色
$ t\" f\" l _ h+ Z - % set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色& u3 C2 Z2 d\" f) r/ k; w; H& J5 i
- grid on %加上网格% R5 I7 S, |. F& ]
- if nargin==4. P0 y: j* j4 J4 x K8 o5 q, l
- set(gca,'Xtick',Xticks); %设置Xtick; H3 t7 k! T* u8 r9 U! z2 ~( ]
- set(gca,'Ytick',Yticks); %设置Xtick
/ ~& ~: u E0 N% I! e - xlim([Xticks(1),Xticks(end)]); %设置x范围
8 m+ R5 |/ ~4 |# [- w - ylim([Yticks(1),Yticks(end)]); %设置y范围
: P) m- x1 Y. Q\" b: M; w! h - end
. x0 r% O3 O, E. c& _0 H2 v - x=get(gca,'XTick'); %获取Xtick) u# S8 B; v$ a% L
- y=get(gca,'YTick'); %获取Ytick
1 n- R! \. a8 T - xL=xlim; %获取X范围
( I1 N% J7 ^7 _. U\" n - yL=ylim; %获取Y范围2 m: z& {2 S. Y( x4 B% z
- xcenter=mean(xL); %X中心
' w- l9 r2 Q/ Q v# K - ycenter=mean(yL); %Y中心
: ?4 B; a+ m& T9 q - xrank=xL(2)-xL(1); %x跨度
\" u s }1 ~+ k8 [- Q% O, N: _ - yrank=yL(2)-yL(1); %y跨度9 w# Q0 v' g/ z
- hold on;
3 L8 f) @0 i+ k4 x# | - plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴 X5 |3 a& n4 V/ U. D; Q. |
- ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
: ~# m0 ]1 b5 b* T: S* r - ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank]; % `- A/ H- I8 J) X
- fill(ax(1,:),ax(2,:),'k'); %画x箭头0 [/ q8 |/ ]\" {, O- d
- ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...' `, F. h) j# H! g, C+ C2 `0 t
- max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];* d+ K# R+ |& Z: e
- fill(ay(1,:),ay(2,:),'k'); %画y箭头' p+ `5 E7 e8 S [ W) R
- Lx=length(x); %x的长度\" W2 F+ p: {7 Q1 |
- plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...; c' Z3 D9 w% n* j5 Q
- ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
# z) ?% d7 H; _# G! e% | - Ly=length(y);
2 l1 ^+ v4 W3 u3 W2 \6 ~ - plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
. q9 f' m* W! E - repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
2 Q/ m7 v0 {! \: H6 l* ]7 X* x - for i=1:Lx' u a5 A* b+ }5 E) L
- text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
9 b2 c( w+ R( B\" Q; J - end) Q2 A( \5 A* K) F& x' [
- for i=1:Ly5 o8 K1 F) P5 ], ^1 ?
- text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
3 k; X: h3 P! m/ E2 z# c5 G' ^# N - end- ?9 X! t8 q0 R1 x0 ?
- hold off;' U/ t- ^# e0 a! @; R
复制代码 |
zan
|