数学建模社区-数学中国
标题:
关于matlab画十字坐标
[打印本页]
作者:
mudan
时间:
2012-10-31 17:16
标题:
关于matlab画十字坐标
本帖最后由 mudan 于 2012-10-31 17:20 编辑
& N( A, O0 |* l( F( t/ v/ [
) |( ^ B7 s3 ]% ~. P+ R
今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是
http://www.ilovematlab.cn/viewth...p;extra=&page=9
function plot_to_center(x,y,Xticks,Yticks)
/ l' S0 i) S" q G& A
if nargin~=2 & nargin~=4 %输入不满足要求则报错
: r' C9 ]# F' u3 y6 _: Q- w
error('??? 输入参数个数不对');
1 r: y. G9 O) f
return;
4 K( G; N8 l4 T) _' U- A
end
3 c# v$ L W/ Z6 u8 a- R
figure;
" _; s/ h2 I; W# _% [6 K
plot(x,y)
( T/ N7 J8 g* Y; c, z4 R
set(gca,'xticklabel',[])%不显示x标注
5 v4 w; g0 D z
set(gca,'yticklabel',[])%不显示y标注
6 }, h/ u: o; T# n# \
c=get(gca,'color'); %获取axes背景色
1 r+ f& t, U% K% t" C
% set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
/ i& V& u. ~; p$ n7 E+ `( O! i5 b
grid on %加上网格
# V! X. R1 x; R, Z6 g
if nargin==4
1 N! a: Y/ u1 y6 ~- I3 P
set(gca,'Xtick',Xticks); %设置Xtick
- z1 G% R5 W. e5 m" K V
set(gca,'Ytick',Yticks); %设置Xtick
+ H4 e! G, o" V1 u2 [" Y5 Y" v; y2 A
xlim([Xticks(1),Xticks(end)]); %设置x范围
% M" n- F7 ?& u9 I! ?4 V6 |$ e
ylim([Yticks(1),Yticks(end)]); %设置y范围
5 ~' X2 m* ?3 v+ Q
end
- S0 M- z4 |, z2 ]
x=get(gca,'XTick'); %获取Xtick
8 u V2 T; ^1 ?# _+ I7 v
y=get(gca,'YTick'); %获取Ytick
1 n' Y, ^" Q0 u& r, H
xL=xlim; %获取X范围
" h) R# b: s, o% X- }" x
yL=ylim; %获取Y范围
& R$ G, y0 z, \& O
xcenter=mean(xL); %X中心
/ Z" H, g6 |# K! @9 A* c2 i1 i9 Q; A
ycenter=mean(yL); %Y中心
) R! E! x8 m7 U' e# U" T
xrank=xL(2)-xL(1); %x跨度
! e/ Y+ w8 p3 ]9 F' N" Y1 _. x
yrank=yL(2)-yL(1); %y跨度
# @3 F# c6 Z2 x6 y6 M( [
hold on;
% B* @6 G; p6 U1 J' D4 n
plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
" ]' f* [- \" E7 W3 r: O c
ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
# U$ }# ?" U7 J! @2 l
ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
5 m6 e) H- e6 g/ R5 g* t: c t
fill(ax(1,:),ax(2,:),'k'); %画x箭头
. e/ `# U4 F" E- U
ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
( X; p- p" h# X+ T
max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
! }" F- m: W7 b- o6 v0 ^) D
fill(ay(1,:),ay(2,:),'k'); %画y箭头
. y0 K# c6 @1 q
Lx=length(x); %x的长度
' Z( Q5 P/ t8 P+ Y7 E- G+ ~
plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
7 a' ?( t# G( E* I( {# g
ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
* q0 n5 ]( ]5 D9 [. M/ l
Ly=length(y);
- \3 N8 ^( l9 Q, I8 r8 Z m
plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
8 E6 i" `! Q& y# @+ S) s* h3 N
repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
& x. B$ M: R2 H. m
for i=1:Lx
8 R& I( l7 e' B' T
text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
( e. D2 b5 ~; x
end
; _( L* p' ]! [
for i=1:Ly
* x# R6 ] i- W v
text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
# ^3 c4 S; e: R# O, [1 H& U2 n
end
- @3 r$ i5 N+ m" _
hold off;
) U$ w+ B+ k J+ F
复制代码
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5