mudan 发表于 2012-10-31 17:16

关于matlab画十字坐标

本帖最后由 mudan 于 2012-10-31 17:20 编辑

今天忽然想到如何用matlab画十字坐标,不过句柄方面确实用的不熟,便从网上找到一段程序,经测试可用,如果使用时不想有边框,可再加上axis off和box off两条语句,程序源出处是http://www.ilovematlab.cn/viewth...p;extra=&page=9function plot_to_center(x,y,Xticks,Yticks)
if nargin~=2 & nargin~=4 %输入不满足要求则报错
error('??? 输入参数个数不对');
return;
end
figure;
plot(x,y)
set(gca,'xticklabel',[])%不显示x标注
set(gca,'yticklabel',[])%不显示y标注
c=get(gca,'color'); %获取axes背景色
% set(gca,'xcolor',c,'ycolor',c) %设置标注杠颜色
grid on %加上网格
if nargin==4
set(gca,'Xtick',Xticks); %设置Xtick
set(gca,'Ytick',Yticks); %设置Xtick
xlim(); %设置x范围
ylim(); %设置y范围
end
x=get(gca,'XTick'); %获取Xtick
y=get(gca,'YTick'); %获取Ytick
xL=xlim; %获取X范围
yL=ylim; %获取Y范围
xcenter=mean(xL); %X中心
ycenter=mean(yL); %Y中心
xrank=xL(2)-xL(1); %x跨度
yrank=yL(2)-yL(1); %y跨度
hold on;
plot(x,ycenter*ones(size(x)),'k',xcenter*ones(size(y)),y,'k') %画坐标轴
ax=[max(x),max(x)-0.02*xrank,max(x)-0.02*xrank;...
ycenter,ycenter+0.01*yrank,ycenter-0.01*yrank];
fill(ax(1,:),ax(2,:),'k'); %画x箭头
ay=[xcenter,xcenter+0.0065*xrank,xcenter-0.0065*xrank;...
max(y),max(y)-0.03*yrank,max(y)-0.03*yrank];
fill(ay(1,:),ay(2,:),'k'); %画y箭头
Lx=length(x); %x的长度
plot(repmat(x(1,2:end-1)',1,11)',repmat(ycenter:0.002*yrank:...
ycenter+0.02*yrank,Lx-2,1)','k') %画x标注杠
Ly=length(y);
plot(repmat(xcenter:0.002*xrank:xcenter+0.02*xrank,Ly-2,1)',...
repmat(y(1,2:end-1)',1,11)','k') %画y标注杠
for i=1:Lx
text(x(i),(ycenter-0.03*yrank),num2str(x(i))); %x标注
end
for i=1:Ly
text(xcenter-0.05*xrank,y(i),num2str(y(i))); %y标注
end
hold off;
页: [1]
查看完整版本: 关于matlab画十字坐标