[转载]matlab画双纵坐标和双横坐标

标签:
转载 |
分类: matlab |
Matlab在一张图中绘制2个不同坐标系的图形,整理网上各种解决办法:
具有两个纵坐标标度的图形
在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy函数。调用格式为:
plotyy(x1,y1,x2,y2)
其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。
双y轴坐标可以用plotyy(x,y1,x,y2)来实现
双x坐标可以用
set(gca,'xaxislocation','bottom','xticklabel',{'0','1','2','3','4'})
(假设x轴的标注为1,2,3,4)
set(gca,'xaxislocation','top','xticklabel',{'0','1','2','3','4'})
进行相应的设置
%绘制双坐标系图形的例子
clear all
close all
tp=(0:100)/100*5;
yp=8+4*(1-exp(-0.8*tp).*cos(3*tp)); % 压力数据
tt=(0:500)/500*40;
yt=120+40*(1-exp(-0.05*tt).*cos(tt)); % 温度数据
% 产生双坐标系图形
figure;
nx=10;%双坐标系中x轴的刻度个数
ny=6; %双坐标系中y轴的刻度个数
%第一个图形
h_ap=axes('Position',[0.13,0.13,0.7,0.75]); %定义图形的区域位置
set(h_ap,'Xcolor','b','Ycolor','b','Xlim',[0,5],'Ylim',[0,15]);%定义图形x,y坐标轴的颜色和范围
pxtick=0:((5-0)/nx):5; %定义x轴刻度
pytick=0:((15-0)/ny):15; %定义y轴刻度
set(h_ap,'Xtick',pxtick,'Ytick',pytick,'Xgrid','on','Ygrid','on')%绘制栅格
h_linet=line(tp,yp,'Color','b'); %绘图
set(get(h_ap,'Xlabel'),'String','时间 rightarrow (分)')%设置x轴的标注
set(get(h_ap,'Ylabel'),'String','压力 rightarrow (times10^{5} Pa )')%设置y轴的标注
%第二个图形
h_at=axes('Position',get(h_ap,'Position')); %第二个图形的位置与第一个相同
set(h_at,'Color','none','Xcolor','r','Ycolor','r');
set(h_at,'Xaxislocation','top') %x轴在上面
set(h_at,'Yaxislocation','right','Ydir','rev') %y轴在右边,且刻度方向相反
set(get(h_at,'Xlabel'),'String','fontsize{15}fontname{隶书} 时间 rightarrow(分)') %设置x轴的标注
set(get(h_at,'Ylabel'),'String','fontsize{15}fontname{隶书} ({circ}C) leftarrow 零下温度') %设置y轴的标注
set(h_at,'Ylim',[0,210]) %定义y坐标轴的范围
line(tt,yt,'Color','r','Parent',h_at); %绘图
xpm=get(h_at,'Xlim'); %获得第二个图形的x轴范围
txtick=xpm(1):((xpm(2)-xpm(1))/nx):xpm(2); %定义x轴刻度
tytick=0:((210-0)/ny):210; %定义y轴刻度
set(h_at,'Xtick',txtick,'Ytick',tytick) %绘制栅格
http://s3/mw690/001T1zmvzy6LxKiYiume2&690
%------------------------------------------------------------------------
clear all
close all
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');%AX(1),AX(2)分别为左右Y轴的句柄
title('Multiple Decay Rates')
xlabel('Time (musec)')
%设置两个y轴的标注
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
%设置两个y轴的范围
set(AX(1),'Ylim',[-200,200])
set(AX(2),'Ylim',[-1,1])
%设置两个y轴的刻度
set(AX(1),'Ytick',[-200:40:200]) %设置左边Y轴的刻度
set(AX(2),'Ytick',[-1:0.2:1]) %设置右边Y轴的刻度
%设置两个曲线的线型
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')
http://s8/mw690/001T1zmvzy6LxKmLJVd77&690
%------------------------------------------------------------------------
clear all
close all
x=linspace(0,2*pi,40);
[ax,h1,h2]=plotyy(x,sin(x)+cos(x),x,exp(x));
set(h1,'linestyle','-','marker','o')
set(h2,'linestyle','-','marker','+')
hold on
h3=line(x,cos(x));
set(h3,'linestyle','-')
set(h3,'marker','s')
hold on
h4=line(x,sin(x));
set(h4,'linestyle','-')
set(h4,'marker','*')
legend([h1,h2,h3,h4],'sin(x)+cos(x)','exp(x)','cos(x)','sin(x)',0);