matlab中两个x轴,【MATLAB】绘制双 X 轴曲线该函数调⽤格式为:
[ax,hl1,hl2] =
plotxx(x1,y1,x2,y2,xlabels,ylabels);
参数说明:
ax是坐标轴的句柄。h1 和 h2
是两条曲线的句柄。x1,y1,x2,y2
是绘图数据。Xlabels,Ylabels是X轴和Y州标注内容对应的细胞结构。
例:
D =
linspace(-100,0,50);%Y轴数据
S =
linspace(34,32,50);%上侧X轴数据
T =
10*exp(D/40);%下侧X轴数据
xlabels{1} = 'Temperature
(C)';%下侧X轴内容标注
xlabels{2} =
'Salinity';%上侧X轴内容标注
ylabels{1} =
'Depth(m)';%左侧Y轴内容标注
ylabels{2} =
'Depth(m)';%右侧Y轴内容标注
[ax,hlT,hlS] =
plotxx(T,D,S,D,xlabels,ylabels);%绘制双X轴曲线
附件:plotxx.m
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
%November 1997; Last revision:
01-Nov-2001
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')
elseiflinspace函数调用的格式为
~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}) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%另⼀种要求:只画⼀条曲线,但要求标注上下两个x轴的坐标
或者:
x1 =
[0:.1:40];
y1 =
4.*cos(x1)./(x1+2);
x2 =
[1:.2:20];
y2 =
x2.^2./x2.^3;
hl1 =
plot(x1,y1,'Color','r');
ax1 =
gca;
set(ax1,'XColor','r','YColor','r')
ax2 =
axes('Position',get(ax1,'Position'),... 'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none',...
'XColor','k','YColor','k');
hl2 =
line(x2,y2,'Color','k','Parent',ax2);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。