当前位置:文档之家› MATLAB中plotyy函数详解:matlab双Y轴作图

MATLAB中plotyy函数详解:matlab双Y轴作图

Matlab plotyy画双纵坐标图实例x = 0::20;y1 = 200*exp*x).*sin(x);y2 = *exp*x).*sin(10*x);[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');set(AX(1),'XColor','k','YColor','b');set(AX(2),'XColor','k','YColor','r');HH1=get(AX(1),'Ylabel');set(HH1,'String','Left Y-axis');set(HH1,'color','b');HH2=get(AX(2),'Ylabel');set(HH2,'String','Right Y-axis');set(HH2,'color','r');set(H1,'LineStyle','-');set(H1,'color','b');set(H2,'LineStyle',':');set(H2,'color','r');legend([H1,H2],{'y1 = 200*exp*x).*sin(x)';'y2 = *exp*x).*sin(10*x)'}); xlabel('Zero to 20 musec.');title('Labeling plotyy');Q:右边用蓝色圈起来的tick能去掉吗由于用plotyy画图,为了使图尽量地显示出来,用了set(AX(1),'YLimMode','auto'),但这样可能会导致左边AX(1)和右边AX(2)的tick的间距不一样,影响美观。

或者说能不能使plotyy画出的图两边的tick间距是一样的,这样在图形右边的tick就会重合在一起.A:如果只是想让plotyy的图美一些,可以使用其如下形式的调用方式:[AX,H1,H2] = plotyy(...)其中AX(2)就是右边Axes对象的句柄,拿到它以后就可以set或者get来处理了,也可以把其ytick关掉。

A:也可以用line语句来画,就没有左边和上边的线了。

Q:plotyy(X1,Y1,X2,Y2,FUN1,FUN2),FUN1和FUN2应该怎么写A:这两个FUN代表plotyy不一定要用两个plot,比如下面的例子,一条曲线用plot,一条用semilogyx1=1::100;x2=x1;y1=x1;y2=x2.^3;plotyy(x1,y1,x2,y2,@plot,@semilogy)来源:画双纵坐标具有两个纵坐标标度的图形在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'})进行相应的设置【 * 例 -1 】制作一个双坐标系用来表现高压和低温两个不同量的过渡过程。

tp=(0:100)/100*5;yp=8+4*(1-exp*tp).*cos(3*tp)); % 压力数据tt=(0:500)/500*40;yt=120+40*(1-exp*tt).*cos(tt)); % 温度数据% 产生双坐标系图形clf reset,h_ap=axes('Position',[,,,]); %<4>set(h_ap,'Xcolor','b','Ycolor','b','Xlim',[0,5],'Ylim',[0,15]);nx=10;ny=6; %<6>pxtick=0:((5-0)/nx):5;pytick=0:((15-0)/ny):15; %<7>set(h_ap,'Xtick',pxtick,'Ytick',pytick,'Xgrid','on','Ygrid','on')h_linet=line(tp,yp,'Color','b'); %<9>set(get(h_ap,'Xlabel'),'String',' 时间 /rightarrow (分) ')set(get(h_ap,'Ylabel'),'String',' 压力 /rightarrow(/times10 ^{5} Pa )')h_at=axes('Position',get(h_ap,'Position')); %<12>set(h_at,'Color','none','Xcolor','r','Ycolor','r'); %<13>set(h_at,'Xaxislocation','top') %<14>set(h_at,'Yaxislocation','right','Ydir','rev') %<15>set(get(h_at,'Xlabel'),'String','/fontsize{15}/fontname{ 隶书 } 时间/rightarrow (分) ')set(get(h_at,'Ylabel'),'String',' ( {/circ}C )/fontsize{15} /leftarrow /fontname{ 隶书 } 零下温度 ')set(h_at,'Ylim',[0,210]) %<18>line(tt,yt,'Color','r','Parent',h_at) %<19>xpm=get(h_at,'Xlim'); %<20>txtick=xpm(1):((xpm(2)-xpm(1))/nx):xpm(2); %<21>tytick=0:((210-0)/ny):210; %<22>set(h_at,'Xtick',txtick,'Ytick',tytick) %<23>来源:实例(已验证):clc;clear all;close all;x=0::2*pi;y1=sin(x);[AX]=plotyy(x,y1,x,y2);set(get(gca,'xlabel'),'string','X-axis');set(get(AX(1),'Ylabel'),'string','left Y-axis');set(get(AX(2),'Ylabel'),'string','right Y-axis');set(gca,'xTick',[0::7]);set(AX(1),'yTick',[-1::1]);set(AX(2),'yTick',[-1::1]);尚存在问题:这种设置方法,对各个轴的最小刻度单位可以设置,但是刻度范围(x取(0~7),y1取(-1~1))不能设置。

2010-12-23修改~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~clcclear allrunoff=[10700 11400 15800 22900 43100 40700 50500 46000 41800 35000]; sed=[ ];m=1:10;[ax,h1,h2]=plotyy(m,runoff,m,sed); %h-- line handleset(get(ax(1),'Ylabel'),'string','Runoff (m^3/s))','color','r') %y1 set(get(ax(2),'Ylabel'),'string','Sediment concentration(kg/m^3)','color','k') %y2xlabel('Month')set(h1,'linestyle','-','color','r');set(h2,'linestyle','- -','color','k');legend([h1 h2],'runoff','sediment concentration') %标注两条线legend('boxoff')% box offset(ax(:),'Ycolor','k') %设定两个Y轴的颜色为黑色set(ax(1),'ytick',[0:10000:100000]); %设置y轴间隔set(ax(2),'ytick',[0::])set(ax,'xlim',[1 12]) % 设置x轴范围hold onscatter(ax(1),4,22900,'r*')axes(ax(2));hold onscatter(4,,'ro')。

相关主题