数学建模社区-数学中国
标题:
关于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
function plot_to_center(x,y,Xticks,Yticks)
6 p& ^4 Y0 a( ^: n7 A
if nargin~=2 & nargin~=4 %输入不满足要求则报错
8 `% [! K9 {- o6 p
error('??? 输入参数个数不对');
; V' }9 u' Q2 x8 ~! W
return;
8 m) i9 l# ^8 c U+ f0 j: {
end
0 _1 Z' [8 ^- t( n; W
figure;
' M# B7 x3 }5 J! A9 d. l
plot(x,y)
, ]( S/ R- |6 X( ~
set(gca,'xticklabel',[])%不显示x标注
9 J8 K* k$ k& t
set(gca,'yticklabel',[])%不显示y标注
) P! O6 O5 b) |+ y
c=get(gca,'color'); %获取axes背景色
# W! S O8 s! M# v. l) x
% set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
( b! C* M+ K0 N) u$ W2 r$ H
grid on %加上网格
. A# u2 V# s/ q; m) w$ [: h
if nargin==4
4 h+ z4 H O$ A G4 [ ?
set(gca,'Xtick',Xticks); %设置Xtick
# ?/ p; \" ^' i' N3 L. g: M1 x
set(gca,'Ytick',Yticks); %设置Xtick
. p/ k7 v, a. I6 q
xlim([Xticks(1),Xticks(end)]); %设置x范围
$ k# p. K4 T1 m
ylim([Yticks(1),Yticks(end)]); %设置y范围
$ Q4 |, ?, @" Q7 F
end
* A2 c. k1 x4 C6 I
x=get(gca,'XTick'); %获取Xtick
( E3 W8 Z0 e& v1 B/ p
y=get(gca,'YTick'); %获取Ytick
2 a+ g# ^( k% f5 \" b- X4 P
xL=xlim; %获取X范围
& u& ]' m+ t6 E8 ~, F7 V
yL=ylim; %获取Y范围
: F, l9 @! M: u
xcenter=mean(xL); %X中心
# a; M: h: d, V7 ~0 A
ycenter=mean(yL); %Y中心
; S0 u" w2 q8 C& M& _% l5 n
xrank=xL(2)-xL(1); %x跨度
$ \( A1 p! Q8 X5 h
yrank=yL(2)-yL(1); %y跨度
& p$ G" _6 r% B
hold on;
& D/ W% B/ }0 ~& M! M
plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
3 S. Z# J, F1 X9 ^
ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
/ W9 A8 L) x* b3 f
ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
) C& C5 L/ J6 S3 f1 h
fill(ax(1,:),ax(2,:),'k'); %画x箭头
B4 G7 H& [& e% t2 H* @& s
ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
; c* [4 u. h* C: f9 T' a, Q( T/ X, t
max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
' v# H9 E0 x Q' x; w" P- i/ z3 H: E
fill(ay(1,:),ay(2,:),'k'); %画y箭头
5 A- ]* C% h f# I5 a
Lx=length(x); %x的长度
. O" K# w( m @; W6 f0 s$ M5 [
plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
" X6 K! O5 M7 R! y6 v% t+ {
ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
" T4 a; h* c5 p) `* k0 d6 D
Ly=length(y);
; {8 Y/ f# u3 P9 T+ U( _
plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
) ?2 d( g6 {$ t, {$ n
repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
) O5 g4 G) |% `/ k& R5 T
for i=1:Lx
# n# C; K9 E5 j h
text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
% w9 L) W, v, C
end
! W" B( W) }3 b- j
for i=1:Ly
$ A: U! j" Y- T0 S1 n" J
text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
" ?/ E" u1 [/ Y) N- ~+ l
end
% b q$ ~6 n0 A; n
hold off;
/ r- y% G4 P1 M. u- j- z' H$ O0 O$ ~
复制代码
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5