www.gusucode.com > 高等数学问题求解源码程序 > CH03/plotxy.m

    function [AX,H1,H2]=plotxy(varargin)                                   
%PLOTXY   绘制双坐标系                                                       
% PLOTXY(X1,Y1,X2,Y2)  在双坐标系中使用plot函数分别绘制数据对X1-Y1和X2-Y2的图形             
% PLOTXY(X1,Y1,X2,Y2,FUN)  在双坐标系中使用绘图函数FUN分别绘制数据对X1-Y1和X2-Y2的          
%                               图形,FUN可以是MATLAB自带绘图函数,比如plot、semilogx、 
%                               loglog、stem等,也可以是用户自编绘图函数,但该自编函数必须     
%                               具有形如h=function(x,y)的调用格式               
% PLOTXY(X1,Y1,X2,Y2,FUN1,FUN2)  在双坐标系中使用绘图函数FUN1和FUN2分别绘制数据对X1-Y1     
%                                      和X2-Y2的图形,其中FUN1和FUN2的格式与FUN完全一样
% AX=PLOTXY(...)  绘制双坐标系图形并返回双坐标系的坐标轴句柄向量                              
% [AX,H1,H2]=PLOTXY(...)  绘制双坐标系图形并返回坐标轴句柄向量、坐标轴中的图形对象句柄               
%                                                                      
% 输入参数:                                                                
%     ---X1,Y1,X2,Y2:绘图数据                                              
%     ---FUN,FUN1,FUN2:指定的绘图函数                                         
% 输出参数:                                                                
%     ---AX:坐标轴句柄向量                                                    
%     ---H1,H2:两坐标系中的图形对象句柄                                            
%                                                                      
% See also PLOTYY                                                      
%                                                                      
args=varargin;                                                         
[x1,y1,x2,y2]=deal(args{1:4});                                         
if nargin<5, fun1 = @plot; else fun1 = args{5}; end                    
if nargin<6, fun2 = fun1;  else fun2 = args{6}; end                    
set(gcf,'NextPlot','add')                                              
hAxes1=axes;                                                           
h1=feval(fun1,hAxes1,x1,y1,'Color','b');                               
set(hAxes1,'XColor','b','YColor','b','Box','off')                      
hAxes2=axes('Position',get(hAxes1,'Position'));                        
h2=feval(fun2,hAxes2,x2,y2,'Color','r');                               
set(hAxes2,'Color','none','XColor','r','YColor','r','Box','off',...    
    'XAxisLocation','top','YAxisLocation','right')                     
if nargout==1                                                          
    AX=[hAxes1,hAxes2];                                                
elseif nargout==3                                                      
    AX=[hAxes1,hAxes2]; H1=h1; H2=h2;                                  
end                                                                    
web -broswer http://www.ilovematlab.cn/forum-221-1.html