第2章 数据可视化函数
1.plot函数
在MATLAB中,提供了plot函数用于绘制二维数据图。该函数可以带有不同数目的参数。最简单的形式就是将数据传递给plot,但是线条的类型和颜色可以通过使用字符串来指定,这里用str表示。线型的默认类型是实线型。plot函数的一般语法格式为:
plot(X,Y):创建Y中数据对应X中数据的二维线图。
· 如果X和Y都是向量,则它们的长度必须相同。plot函数绘制Y对X的图。
· 如果X和Y均为矩阵,则它们的大小必须相同。plot函数绘制Y的列对X的列的图。
· 如果X或Y中的一个是向量而另一个是矩阵,则矩阵的各维中必须有一维与向量的长度相等。如果矩阵的行数等于向量长度,则plot函数绘制矩阵中的每一列对向量的图。如果矩阵的列数等于向量长度,则该函数绘制矩阵中的每一行对向量的图。如果矩阵为方阵,则该函数绘制每一列对向量的图。
· 如果X或Y之一为标量,而另一个为标量或向量,则plot函数会绘制离散点。但是,要查看这些点,必须指定标记符号,如plot(X,Y,'o')。
plot(X,Y,LineSpec):设置线型、标记符号和颜色,指定为包含符号的字符向量或字符串。符号可以按任意顺序显示。不需要同时指定所有三个特征(线型、标记和颜色)。表2-1~表2-3列出了线型、标记符号和颜色。
表2-1 线型
表2-2 标记符号
续表
表2-3 颜色
plot(X1,Y1,…,Xn,Yn):绘制多个X、Y对组的图,所有线条都使用相同的坐标区。
plot(X1,Y1,LineSpec1,…,Xn,Yn,LineSpecn):设置每个线条的线型、标记符号和颜色。可以混用X、Y、LineSpec三元组和X、Y对组,如plot(X1,Y1,X2,Y2,LineSpec2,X3,Y3)。
plot(Y):创建Y中数据对每个值索引的二维线图。
· 如果Y是向量,x轴的刻度范围是从1至length(Y)。
· 如果Y是矩阵,则plot函数绘制Y中各列对其行号的图。x轴的刻度范围是从1到Y的行数。
· 如果Y是复数,则plot函数绘制Y的虚部对Y的实部的图,使得plot(Y)等效于plot(real(Y),imag(Y))。
plot(Y,LineSpec):设置线型、标记符号和颜色。
plot(____,Name,Value):使用一个或多个Name-Value对组参数指定线条属性。可以将此选项与前面语法中的任何输入参数组合一起使用。名称-值对组设置将应用于绘制的所有线条。
plot(ax,___):将在由ax指定的坐标区中,而不是在当前坐标区(gca)中创建线条。选项ax可以位于前面的语法中的任何输入参数组合之前。
h=plot(____):返回由图形线条对象组成的列向量。在创建特定的图形线条后,可以使用h修改其属性。
【例2-1】绘制三条正弦曲线,每条曲线之间存在较小的相移。第一条正弦曲线使用绿色实线条,不带标记;第二条正弦曲线使用蓝色虚线,带圆形标记;第三条正弦曲线只使用青蓝色星号标记。
运行程序,效果如图2-1所示。
彩色图片(图2-1和图2-2)
图2-1 绘制三条正弦曲线
此外,在MATLAB中,还提供了相关函数用于为图形添加标注,如添加标题title、添加x轴坐标xlabel、添加y轴坐标ylabel、添加图例说明legend、为图形添加文字说明text函数等,下面通过一个实例来演示各函数的用法。
【例2-2】图窗内文字说明综合实例。
x = 0:0.01*pi:pi*0.5; y = cos(x)+sqrt(-1)*sin(x); plot(y*2,'r','LineWidth',5); hold on; x = pi*0.5:0.01*pi:pi; y = cos(x)+sqrt(-1)*sin(x); plot(y*2,'y','LineWidth',5); hold on; x = -pi:0.01*pi:-pi*0.5; y = cos(x)+sqrt(-1)*sin(x); plot(y*2,'b','LineWidth',5); hold on; %图形添加 x = -pi*0.5:0.01*pi:0; y = cos(x)+sqrt(-1)*sin(x); plot(y*2,'g','LineWidth',5); hold on; title('极坐标系') %添加标题 text([1.5,-3,1.5,-3],[2,2,-2,-2],{'第一象限','第二象限','第三象限','第四象限'}) legend({'第一象限[0 0.5\pi]','第二象限[0.5\pi,\pi]','第三象限[\pi,1.5\pi]','第四象限[1.5\pi, 2\pi]'}) xlim([-5 5]); ylim([-5,5]); plot([-4,4],[0,0],'k','LineWidth',3); hold on; plot([0 0],[-4 4],'k','LineWidth',3); hold on; axis off
运行程序,效果如图2-2所示。
图2-2 图形文字说明效果