在进行数据可视化时,Matlab作为一种强大的可视化工具,提供了丰富的绘图函数和命令,plotyy函数就是其中之一。plotyy命令主要用于在同一图中绘制两个不同刻度的坐标轴,这对于对比大量数据的分布和趋势非常有帮助。本文将详细介绍如何使用plotyy命令实现同一图中的双坐标轴绘图。
一、plotyy函数的语法格式
plotyy(x1, y1, x2, y2, 'func1', 'func2');
其中x1和y1表示第一个坐标轴的横坐标和纵坐标数据,x2和y2表示第二个坐标轴的横坐标和纵坐标数据;‘func1’和‘func2’分别表示第一个坐标轴和第二个坐标轴的绘图函数,可以为'plot'、'semilogx'、'semilogy'、'loglog'或者任意自定义函数。
二、绘制双坐标轴的步骤
1. 准备数据
为了测试plotyy函数的绘图功能,我们需要先准备一些数据,这里我们采用cos、sin和exp等函数产生一些随机数据:
x = 0:0.1:10;
y1 = sin(2*pi*x/5);
y2 = exp(-x);
2. 绘制双坐标轴图形
调用plotyy函数,实现双坐标轴图形,同时将xlabel指令赋给第一个坐标轴,ylabel赋给第二个坐标轴:
[haxes,hlines1,hlines2] = plotyy(x, y1, x, y2, 'plot', 'plot');
xlabel(haxes(1), 'x-axis values');
ylabel(haxes(1), 'y1-axis values');
ylabel(haxes(2), 'y2-axis values');
这样,就可以在同一图中生成两个坐标轴的分别呈现y1和y2数据的图形,如下图所示。
三、常见用例
除了上面的简单用例外,plotyy函数还有一些常见的用例,如下:
1. 绘制不同类型的线条:
我们可以在同一图中绘制不同类型的线条,如下代码所示:
x = 0:0.1:10;
y1 = sin(2*pi*x/5);
y2 = exp(-x);
[haxes,hlines1,hlines2] = plotyy(x, y1, x, y2, 'semilogy', 'semilogx');
xlabel(haxes(1), 'x-axis values');
ylabel(haxes(1), 'y1-axis values');
ylabel(haxes(2), 'y2-axis values');
这里,我们将第一个坐标轴设置为semilogy函数,第二个坐标轴设置为semilogx函数,绘制了两种不同的线条,如下图所示。
2. 绘制单个数据的两组数据
我们可以在同一图中绘制单个数据的两组数据,如下代码所示:
y1 = [12, 3.4, 4.4, 11, 26];
y2 = [0.5, 0.3, 5, 9.9, 11];
x = categorical({'A', 'B', 'C', 'D', 'E'});
[haxes,hlines1,hlines2] = plotyy(x, y1, x, y2);
xlabel(haxes(1), 'Groupings');
ylabel(haxes(1), 'Scale A');
ylabel(haxes(2), 'Scale B');
这里,我们使用了categorical函数将x轴数据类型定义为类别型变量。可以看到,y1与y2的极差相差很大,使用plotyy函数可以在同一图中同时表示这两个数据。如下图所示。
四、总结
plotyy函数是Matlab中一个十分实用的绘图函数,它方便我们在同一图中同时展示两组不同类型,不同比例和数据范围的数据。在使用plotyy函数时,首先需要准备好要绘制的数据,然后调用plotyy函数来实现双坐标轴绘图。通过本文,我们可以更好的理解和掌握Matlab中plotyy函数的使用方法。