绘制双y轴图形,可以进行有效的对比呈现,论文中经常用到。 基本方法有两种: 1、plotyy函数:考虑兼容性,从2016版本之后不推荐使用。 2、yyaxis方式:是MATLAB继plotyy之后推出的画双y轴图形的方式。 1、plotyy函数plotyy(X1,Y1,X2,Y2)plotyy(X1,Y1,X2,Y2,function)plotyy(X1,Y1,X2,Y2,function1,function2)plotyy(AX1,)〔AX,H1,H2〕plotyy()说明plotyy(X1,Y1,X2,Y2)绘制Y1对X1的图,在左侧显示y轴标签,并同时绘制Y2对X2的图,在右侧显示y轴标签。plotyy(X1,Y1,X2,Y2,function)使用指定的绘图函数生成图形。function可以是指定plot、semilogx、semilogy、loglog、stem的函数句柄或字符向量,或者是能接受以下语法的任意MATLAB函数:hfunction(x,y)例如,plotyy(x1,y1,x2,y2,loglog)functionhandleplotyy(x1,y1,x2,y2,loglog)charactervector函数句柄能够用于访问用户定义的局部函数,并能提供其他优势。plotyy(X1,Y1,X2,Y2,function1,function2)使用function1(X1,Y1)绘制左轴的数据,使用function2(X2,Y2)绘制右轴的数据。plotyy(AX1,)使用第一组数据的AX1指定的坐标区(而不是使用当前坐标区)绘制数据。将AX1指定为单个坐标区对象或由以前调用plotyy所返回的两个坐标区对象的向量。如果您指定向量,则plotyy使用向量中的第一个坐标区对象。可以将此选项与前面语法中的任何输入参数组合一起使用。〔AX,H1,H2〕plotyy()返回AX中创建的两个坐标区的句柄,以及H1和H2中每个绘图的图形对象的句柄。AX(1)是左边的坐标区,AX(2)是右边的坐标区。 2。实例closeallNpoint21;xlinspace(0,10,Npoint);y1sin(x);y2cos(x);figure〔ax,p1,p2〕plotyy(x,y1,x,y2,plot,plot);set(ax(1),XColor,k,YColor,b);设置x轴为黑色,左边y(也就是y1)轴为蓝色set(ax(2),XColor,k,YColor,r);设置x轴为黑色,右边y(也就是y2)轴为红色xlabel(X);ylabel(ax(1),Y1);leftyaxisylabel(ax(2),Y2);rightyaxistitle(TherelationshipofX,Y1andX,Y2)以下两行分别设置数据y1,y2的线型、颜色、填充点类型及颜色set(p1,linestyle,,marker,o,color,b,MarkerFaceColor,b);set(p2,linestyle,,marker,,color,r,MarkerFaceColor,r);以下两行分别设置v数据y1,y2的间距大小set(ax(1),yTick,〔1:0。2:1〕);set(ax(2),yTick,〔1:0。1:1〕); 运行结果 使用两个y轴在一个图上绘制两个数据集。对与左y轴关联的数据使用线图。对与右y轴关联的数据使用针状图。 程序x0:0。1:10;y1200exp(0。05x)。sin(x);y20。8exp(0。5x)。sin(10x);figure〔hAx,hLine1,hLine2〕plotyy(x,y1,x,y2,plot,stem)hLine1。LineShLine2。LineStyle:;title(MultipleDecayRates)xlabel(Time(musec))ylabel(hAx(1),SlowDecay)leftyaxisylabel(hAx(2),FastDecay)rightyaxis 运行结果 使用两个y轴在一个图表上绘制三个数据集。绘制一个与左y轴关联的数据集。使用包含两列的矩阵绘制与右y轴关联的两个数据集。 程序xlinspace(0,10);y1200exp(0。05x)。sin(x);y20。8exp(0。5x)。sin(10x);y30。2exp(0。5x)。sin(10x);figure〔hAx,hLine1,hLine2〕plotyy(x,y1,〔x,x〕,〔y2,y3〕); 运行结果 3。yyaxis函数方式yyaxis创建具有两个y轴的图语法yyaxisleftyyaxisrightyyaxis(ax,)说明yyaxisleft激活当前坐标区中与左侧y轴关联的一侧。后续图形命令的目标为左侧。如果当前坐标区中没有两个y轴,此命令将添加第二个y轴。如果没有坐标区,此命令将首先创建坐标区。yyaxisright激活当前坐标区中与右侧y轴关联的一侧。后续图形命令的目标为右侧。yyaxis(ax,)指定ax坐标区(而不是当前坐标区)的活动侧。如果坐标区中没有两个y轴,此命令将添加第二个y轴。指定坐标区作为第一个输入参数。使用单引号将left和right引起来。 4。实例 程序xlinspace(0,10);ysin(3x);yyaxisleftplot(x,y)zsin(3x)。exp(0。5x);yyaxisrightplot(x,z)ylim(〔150150〕) 运行结果 创建具有两个y轴的图,并为每一侧添加标题和轴标签。从示例文件accidents。mat加载矩阵hwydata。创建hwydata中的第五列对左侧y轴的散点图。添加标题和轴标签。 程序load(accidents。mat,hwydata)ind1:51;drivershwydata(:,5);yyaxisleftscatter(ind,drivers)title(HighwayData)xlabel(States)ylabel(LicensedDrivers(thousands))创建hwydata中的第七列对右侧y轴的另一个散点图。然后为右侧y轴添加标签。pophwydata(:,7);yyaxisrightscatter(ind,pop)ylabel(VehicleMilesTraveled(millions)) 运行结果 使用holdon命令基于左侧y轴绘制两个线条。 程序xlinspace(0,10);yl1sin(x);yl2sin(x2);yyaxisleftplot(x,yl1)holdonplot(x,yl2) 运行结果 程序xlinspace(0,10);yl1sin(x);yl2sin(x2);yyaxisleftplot(x,yl1)holdonplot(x,yl2)基于右侧y轴绘制两个线条。hold命令同时影响左侧和右侧y轴,因此您不需要再次发出此命令。完成绘图后,关闭hold。yr1x;yr2x。2;yyaxisrightplot(x,yr1)plot(x,yr2)holdoff 运行结果 程序xlinspace(0,10);yl1sin(x);yl2sin(x2);yyaxisleftplot(x,yl1)holdonplot(x,yl2)基于右侧y轴绘制两个线条。hold命令同时影响左侧和右侧y轴,因此您不需要再次发出此命令。完成绘图后,关闭hold。yr1x;yr2x。2;yyaxisrightplot(x,yr1)plot(x,yr2)holdoff通过激活左侧并使用cla命令来清除左侧。yyaxisleftcla 运行结果 本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。 作者郭志龙 编辑郭志龙 校对郭志龙