加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-02-21 17:16:46)
标签:

转载

分类: 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轴的标注为1234
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);

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有