88 lines
2.5 KiB
Matlab
88 lines
2.5 KiB
Matlab
function [ax,hl1,hl2] = plotxx(x1,y1,x2,y2,xlabels,ylabels);
|
|
%PLOTXX - Create graphs with x axes on both top and bottom
|
|
%
|
|
%Similar to PLOTYY, but ...
|
|
%the independent variable is on the y-axis,
|
|
%and both dependent variables are on the x-axis.
|
|
%
|
|
%Syntax: [ax,hl1,hl2] = plotxx(x1,y1,x2,y2,xlabels,ylabels);
|
|
%
|
|
%Inputs: X1,Y1 are the data for the first line (black)
|
|
% X2,Y2 are the data for the second line (red)
|
|
% XLABELS is a cell array containing the two x-labels
|
|
% YLABELS is a cell array containing the two y-labels
|
|
%
|
|
%The optional output handle graphics objects AX,HL1,HL2
|
|
%allow the user to easily change the properties of the plot.
|
|
%
|
|
%Example: Plot temperature T and salinity S
|
|
% as a function of depth D in the ocean
|
|
%
|
|
%D = linspace(-100,0,50);
|
|
%S = linspace(34,32,50);
|
|
%T = 10*exp(D/40);
|
|
%xlabels{1} = 'Temperature (C)';
|
|
%xlabels{2} = 'Salinity';
|
|
%ylabels{1} = 'Depth(m)';
|
|
%ylabels{2} = 'Depth(m)';
|
|
%[ax,hlT,hlS] = plotxx(T,D,S,D,xlabels,ylabels);
|
|
%
|
|
%
|
|
%The code is inspired from page 10-26 (Multiaxis axes)
|
|
%of the manual USING MATLAB GRAPHICS, version 5.
|
|
%
|
|
%Tested with Matlab 5.3.1 and above on PCWIN
|
|
%
|
|
%Author: Denis Gilbert, Ph.D., physical oceanography
|
|
%Maurice Lamontagne Institute, Dept. of Fisheries and Oceans Canada
|
|
%email: gilbertd@dfo-mpo.gc.ca Web: http://www.qc.dfo-mpo.gc.ca/iml/
|
|
%November 1997; Last revision: 01-Nov-2001
|
|
%
|
|
%
|
|
% Taken from MATLAB Central:
|
|
%
|
|
% http://www.mathworks.com/matlabcentral/fileexchange/317-plotxx-m
|
|
|
|
if nargin < 4
|
|
error('Not enough input arguments')
|
|
elseif nargin==4
|
|
%Use empty strings for the xlabels
|
|
xlabels{1}=' '; xlabels{2}=' '; ylabels{1}=' '; ylabels{2}=' ';
|
|
elseif nargin==5
|
|
%Use empty strings for the ylabel
|
|
ylabels{1}=' '; ylabels{2}=' ';
|
|
elseif nargin > 6
|
|
error('Too many input arguments')
|
|
end
|
|
|
|
if length(ylabels) == 1
|
|
ylabels{2} = ' ';
|
|
end
|
|
|
|
if ~iscellstr(xlabels)
|
|
error('Input xlabels must be a cell array')
|
|
elseif ~iscellstr(ylabels)
|
|
error('Input ylabels must be a cell array')
|
|
end
|
|
|
|
hl1=line(x1,y1,'Color','k');
|
|
ax(1)=gca;
|
|
set(ax(1),'Position',[0.12 0.12 0.75 0.70])
|
|
set(ax(1),'XColor','k','YColor','k');
|
|
|
|
ax(2)=axes('Position',get(ax(1),'Position'),...
|
|
'XAxisLocation','top',...
|
|
'YAxisLocation','right',...
|
|
'Color','none',...
|
|
'XColor','r','YColor','k');
|
|
|
|
set(ax,'box','off')
|
|
|
|
hl2=line(x2,y2,'Color','r','Parent',ax(2));
|
|
|
|
%label the two x-axes
|
|
set(get(ax(1),'xlabel'),'string',xlabels{1})
|
|
set(get(ax(2),'xlabel'),'string',xlabels{2})
|
|
set(get(ax(1),'ylabel'),'string',ylabels{1})
|
|
set(get(ax(2),'ylabel'),'string',ylabels{2})
|