MATLAB是一种功能强大的数学软件,拥有丰富的绘图工具,可以绘制各种形式的图表。其中,plotyy函数是一种特殊的绘图函数,它可以同时绘制两个y轴的图表,以展示两个数据系列的变化趋势。本文将介绍如何,从而更好地展示数据的关系。
1. plotyy函数的基本用法
plotyy函数是MATLAB绘图工具箱中提供的双y轴图表绘制函数。它的基本语法如下:
>[hAx,hLine1,hLine2] = plotyy(x1,y1,x2,y2)
其中,x1和y1是第一个数据系列的横轴和纵轴数据;x2和y2是第二个数据系列的横轴和纵轴数据。hAx是返回的坐标轴句柄,hLine1和hLine2是返回的两条曲线句柄。关于plotyy函数的详细使用方法可以查看MATLAB帮助文档。
使用plotyy函数绘制双y轴图表的基本步骤如下:
1)准备数据。需要提前准备好两组数据,每组数据都有自己的横轴和纵轴数据。
2)使用plotyy函数绘制图表。将准备好的两组数据传入plotyy函数中,生成双y轴图表。
3)设置坐标轴属性。调整双y轴图表的坐标轴属性,使其更加直观和易读。
下面,以一个实例来说明如何使用plotyy函数绘制双y轴图表。
【实例】绘制双y轴图表展示两组数据的变化趋势
假设现有两组数据,分别为销售额和成本。需要绘制一张图表,展示它们的变化趋势,以便于观察它们的关系。
首先,准备好数据。假设销售额和成本数据如下:
```Matlab
sales = [1000, 1200, 1300, 1500, 1700, 1800, 2000];
cost = [800, 900, 1000, 1200, 1300, 1400, 1600];
month = [1,2,3,4,5,6,7];
```
其中,month数组表示月份,sales和cost分别表示销售额和成本。
然后,使用plotyy函数绘制双y轴图表。代码如下:
```Matlab
[hAx,hLine1,hLine2] = plotyy(month,sales,month,cost);
```
其中,hAx是返回的坐标轴句柄,hLine1和hLine2是返回的两条曲线句柄。
最后,调整双y轴图表的坐标轴属性。代码如下:
```Matlab
set(hAx(1),'YLim',[0,3000],'YColor',[0,0,1],'FontSize',12);
set(hAx(2),'YLim',[0,2000],'YColor',[0,0.5,0],'FontSize',12);
set(hLine1,'LineStyle','-','Marker','o','Color',[0,0,1]);
set(hLine2,'LineStyle','-','Marker','^','Color',[0,0.5,0]);
xlabel('Month','FontSize',14);
ylabel(hAx(1),'Sales','FontSize',14);
ylabel(hAx(2),'Cost','FontSize',14);
```
其中,set函数可以设置坐标轴属性,包括YLim、YColor和FontSize等;hLine1和hLine2则是设置曲线的属性,包括LineStyle、Marker和Color等。同时,xlabel、ylabel也可以设置坐标轴标签。
运行上述代码之后,会得到一张双y轴图表,如下所示:

从图表中可以明显看出,销售额和成本的变化规律不太一样:销售额呈现逐月升高的趋势,而成本则是先上升后下降的趋势,同时它们的值也存在差距。通过这张图表可以更好地理解销售额和成本之间的关系,进而作出更合理的经营决策。
2. plotyy函数的高级用法
除了上述基本用法,plotyy函数还有许多高级用法,可以更加灵活和丰富地展现数据。
(1)绘制多条曲线
通过plotyy函数的返回值,可以同时绘制多条曲线,以更加丰富地展现数据。例如,现在有三组数据,需要绘制三条曲线的双y轴图表。可以这样做:
```Matlab
sales = [1000, 1200, 1300, 1500, 1700, 1800, 2000];
cost = [800, 900, 1000, 1200, 1300, 1400, 1600];
profit = sales - cost;
month = [1,2,3,4,5,6,7];
[hAx,hLine1,hLine2] = plotyy(month,sales,month,cost);
hold on;
[hLine3] = plotyy(month,profit);
set(hLine1,'LineStyle','-','Marker','o','Color',[0,0,1]);
set(hLine2,'LineStyle','-','Marker','^','Color',[0,0.5,0]);
set(hLine3,'LineStyle','-','Marker','s','Color',[1,0,0]);
set(hAx(1),'YLim',[0,3000],'YColor',[0,0,1],'FontSize',12);
set(hAx(2),'YLim',[0,2000],'YColor',[0,0.5,0],'FontSize',12,'XTick',[]);
xlabel('Month','FontSize',14);
ylabel(hAx(1),'Sales and Profit','FontSize',14);
ylabel(hAx(2),'Cost','FontSize',14);
```
其中,hold on语句可以让plotyy函数返回多个曲线句柄;hLine3则是新添加的曲线句柄。
运行上述代码之后,会得到一张展示三组数据的双y轴图表,如下所示:

从图表中可以看出,现在有三组数据,分别展示了销售额、成本和利润的变化趋势。这张图表更加丰富和多样化,可以更好地展现数据之间的关系。
(2)调整坐标轴刻度和标题
除了调整坐标轴属性之外,还可以调整坐标轴刻度和标题,从而更加直观和清晰地展现数据。例如,现在需要调整双y轴图表的坐标轴刻度和标题,可以这样做:
```Matlab
sales = [1000, 1200, 1300, 1500, 1700, 1800, 2000];
cost = [800, 900, 1000, 1200, 1300, 1400, 1600];
month = [1,2,3,4,5,6,7];
[hAx,hLine1,hLine2] = plotyy(month,sales,month,cost,@bar,@bar);
set(hLine1,'Visible','off');
set(hLine2,'Visible','off');
set(hAx(1),'YLim',[0,3000],'YColor',[0,0,1],'FontSize',12,'YTick',[1000,1500,2000,2500,3000]);
set(hAx(2),'YLim',[0,2000],'YColor',[0,0.5,0],'FontSize',12,'XTick',[]);
xlabel('Month','FontSize',14);
ylabel(hAx(1),'Sales','FontSize',14);
ylabel(hAx(2),'Cost','FontSize',14);
title('Sales and Cost in 2021','FontSize',16);
```
其中,@bar函数可以绘制柱状图,从而更加清晰地展示销售额和成本的高低差距。同时,可以使用set函数调整坐标轴刻度。最后,使用title函数可以添加标题。
运行上述代码之后,会得到一张添加刻度和标题的双y轴图表,如下所示:

从图表中可以看出,添加了刻度和标题之后,双y轴图表更加直观和清晰,并且更容易理解数据变化趋势。
3. plotyy函数的注意事项
使用plotyy函数绘制双y轴图表时需要注意以下几点:
(1)数据对齐。两组数据需要对齐,即对应的数据点在横轴上对应的位置相同。否则,绘制的图表可能会失真。
(2)坐标轴属性设置。需要根据数据特点设置坐标轴属性,包括刻度、范围、颜色和字体大小等。可以逐步调整坐标轴属性,以达到更好的效果。
(3)曲线样式设置。绘制的曲线可以设置不同的样式,包括线型、标记和颜色等。可以通过设置曲线样式使图表更加清晰和易读。
(4)多条曲线的处理。如果需要在双y轴图表中绘制多条曲线,需要使用hold on语句,并且需要让每条曲线的数据对应相同的横轴位置。
4. 结论
通过本文的介绍,我们了解了如何。基本用法包括准备数据、调用函数和设置坐标轴属性。高级用法包括绘制多条曲线、调整坐标轴刻度和标题等。最后,我们也了解到使用plotyy函数绘制双y轴图表时需要注意的事项和技巧。这些知识和技能将帮助我们更好地展示和理解数据,从而做出更好的决策。