5.2 二维图形绘制(1)
二维图形是MATLAB图形的基础,也是应用非常广泛的图形类型之一。MATLAB提供了许多二维图形绘制函数。
MATLAB基本的二维图形包括线型(Line Plots)、散点型(Scatter Plots)、条型(Bar Plots)、极坐标型(Polar Plots)及矢量图型(Vector Fields)等。单击相应的类型,就可以查看相应的用法。
本节介绍二维图形的绘制指令plot、图形的编辑、子图的绘制、交互式图形的绘制及双坐标图形的绘制等。
5.2.1 plot指令
将数对排序的一种方法是使用plot指令。该命令可以带有不同数目的参数。最简单的形式就是将数据传递给plot,但是线条的类型和颜色可以通过使用字符串来指定,这里用str表示。线条的默认类型是实线型。
下面给出plot指令的一般使用规范。
(1)plot指令使用规范一:plot(x,y)。
语句说明:以x为横坐标,y为纵坐标,按照坐标(xj,yj)的有序排列绘制曲线。
(2)plot指令使用规范二:plot(y)。
语句说明:其中y为一维实数数组,以1:n为横坐标,yj为纵坐标,绘制曲线(n为y的长度)。
(3)plot指令使用规范三:plot(z)。
语句说明:其中z为一维复数数组,以横轴为实轴,纵轴为虚轴,在复平面上绘制(real(zj),imag(zj))的有序集合的图形。
例5-4:plot指令使用示例一。
创建M文件并命名为cossinfigure.m(同时存为ex5_04.m),利用M文件编辑器在M文件中输入:
clear all X = -10 : 10;Y = X .^ 2; figure(1) subplot(1,3,1);plot(X , Y , 'LineWidth' , 2); subplot(1,3,2);plot(Y , 'LineWidth' , 2);xlim([1 length(Y)]) Z = cos(-pi : pi / 10 : pi) + sqrt(-1) * sin(-pi : pi / 10 : pi); subplot(1,3,3);plot(Z , 'LineWidth' , 2);
运行M文件,结果如图5-6所示。
图5-6 cossinfigure.m运行结果
(4)plot指令使用规范四:plot(A)。
语句说明:绘制矩阵A的列对它的下标的图形。对于m×n的矩阵A,有n个含有m个元素的数对,或是n条有m个点的曲线,且这n条曲线均采用颜色监视器上不同的颜色绘制而成。
例5-5:plot指令使用示例二。
创建M文件并命名为magicfigure.m(同时存为ex5_05.m),利用M文件编辑器在M文件中输入:
clear all A = magic(8); figure; plot(A) A
运行M文件,结果如图5-7所示。
A = 64 2 3 61 60 6 7 57 9 55 54 12 13 51 50 16 17 47 46 20 21 43 42 24 40 26 27 37 36 30 31 33 32 34 35 29 28 38 39 25 41 23 22 44 45 19 18 48 49 15 14 52 53 11 10 56 8 58 59 5 4 62 63 1
图5-7 magicfigure.m运行结果
(5)plot指令使用规范五:plot(x,A)。
语句说明:绘制矩阵A对向量x的图形。对m×n的矩阵A和长度为m的向量x,绘制矩阵A的列对向量x的图形;如果x的长度为n,则绘制矩阵A的行对向量x的图形。向量x可以是行向量,也可以是列向量。
(6)plot指令使用规范六:plot(A,x)。
语句说明:对矩阵A绘制向量x的图形。对于一个m×n的矩阵A和一个长度为m的向量x,对矩阵A的列绘制向量x的图形;如果x的长度为n,则对矩阵A的行绘制向量x的图形。向量x可以是行向量,也可以是列向量。
(7)plot指令使用规范七:plot(A,B)。
语句说明:对矩阵A的行绘制矩阵B的列的图形。如果A和B都是m×n的矩阵,则将绘制n条由m个有序对连成的曲线。
例5-6:plot指令使用示例三。
创建M文件并命名为figuregrid.m(同时存为ex5_06.m),利用M文件编辑器在M文件中输入:
clear all for i = 1 : 5 for j = 1 : 6 A(i , j) = i + j; end end A x = 0.2 : 0.2 : 1; x figure(1) subplot(2,2,1);plot(A,x,'LineWidth',1.5); subplot(2,2,2);plot(x,A,'LineWidth',1.5); B = reshape(1 : 30 , 5 , 6); B subplot(2,2,3);plot(A,B,'LineWidth',1.5); subplot(2,2,4);plot(B,A,'LineWidth',1.5);
运行M文件,结果如图5-8所示。
A = 2 3 4 5 6 7 3 4 5 6 7 8 4 5 6 7 8 9 5 6 7 8 9 10 6 7 8 9 10 11 x = 0.2000 0.4000 0.6000 0.8000 1.0000 B = 1 6 11 16 21 26 2 7 12 17 22 27 3 8 13 18 23 28 4 9 14 19 24 29 5 10 15 20 25 30
图5-8 figuregrid.m运行结果
(8)plot指令使用规范八:plot(x,y,str)。
语句说明:用字符串str指定的颜色和线型对y绘制x的图形。
(9)plot指令使用规范九:plot(x1,y1,str1,x2,y2,str2,…)。
语句说明:用字符串str1指定的颜色和线型对y1绘制x1的图形,用字符串str2指定的颜色和线型对y2绘制x2的图形……每组参数值可以采用上述除复数值外的任何一种形式。str1,str2…可以省略,此时,MATLAB自动为每条曲线选择颜色和线型。
例5-7:plot指令使用示例四。
创建M文件并命名为fivecircle.m(同时存为ex5_07.m),利用M文件编辑器在M文件中输入:
clear j = sqrt(-1); x = 2;y = 0.4; bluecircle = cos(-pi : pi / 20 : pi) + j * sin(-pi : pi / 20 : pi) + (j * y - x); blackcircle = cos(-pi : pi / 20 : pi) + j * sin(-pi : pi / 20 : pi) + (j * y); redcircle = cos(-pi : pi / 20 : pi) + j * sin(-pi : pi / 20 : pi) + (j * y + x); yellowcircle = cos(-pi : pi / 20 : pi) + j * sin(-pi : pi / 20 : pi) + (- j * y - x / 2); greencircle = cos(-pi : pi / 20 : pi) + j * sin(-pi : pi / 20 : pi) + (- j * y + x / 2); figure(1) plot(bluecircle,'LineWidth',5);hold on; plot(blackcircle,'k','LineWidth',5);hold on; plot(redcircle,'r','LineWidth',5);hold on; plot(yellowcircle,'y','LineWidth',5);hold on; plot(greencircle,'g','LineWidth',5);
运行M文件,结果如图5-9所示。
图5-9 fivecircle.m运行结果
例5-8:plot指令使用示例五。
创建M文件并命名为tanfigure.m(同时存为ex5_08.m),利用M文件编辑器在M文件中输入:
x = -pi : pi / 10 : pi; y = tan(sin(x)) - sin(tan(x)); plot(x, y, '--rs', 'LineWidth', 2, 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'g', 'MarkerSize', 10);
运行M文件,结果如图5-10所示。
图5-10 tanfigure.m运行结果
例5-9:利用函数plot绘制包络线。
创建M文件并命名为envelope.m(同时存为ex5_09.m),利用M文件编辑器在M文件中输入:
clear all t = (0 : pi / 100 : pi)'; y1 = sin(t) * [1 , -1]; y2 = sin(t) .* sin(9 * t); t3 = pi * (0 : 9) / 9; y3 = sin(t3) .* sin(9 * t3); plot(t, y1, 'r:', t, y2, 'b', t3, y3, 'bo') axis([0, pi, -1, 1])
运行M文件,结果如图5-11所示。
图5-11 envelope.m运行结果
例5-10:当输入参数为向量时,利用函数plot绘制多条曲线。
创建M文件并命名为multicurves.m(同时存为ex5_10.m),利用M文件编辑器在M文件中输入:
clear all x = -pi : pi / 10 : pi; y = [sin(x);sin(x + 3);sin(x + 5)]; z = [cos(x);cos(x + 3);cos(x + 5)]; figure; plot(x, y, 'r:*', x, z, 'g-.v');
运行M文件,结果如图5-12所示。
图5-12 multicurves.m运行结果
5.2.2 栅格
当图像需要对具体数值有更加清楚的展示时,在图形中添加栅格是十分有效的方法。在MATLAB中,grid on命令可以在当前图形的单位标记处添加栅格;grid off命令则可以取消栅格的显示;单独使用grid命令则可以在on与off状态下交替转换,即起到触发的作用。
例5-11:栅格的使用示例。
创建M文件并命名为figuregrid.m(同时存为ex5_11.m),利用M文件编辑器在M文件中输入:
X = (0 : 1800) * pi / 180;Y = cos(X / 2); figure(1) subplot(1,3,1);plot(X, Y, 'LineWidth', 2);xlim([0 30]);grid on; subplot(1,3,2);plot(X, Y, 'LineWidth', 2);xlim([0 30]);grid on;grid subplot(1,3,3);plot(X, Y, 'LineWidth', 2);xlim([0 30]);grid;grid off;
运行M文件,结果如图5-13所示。
图5-13 figuregrid.m运行结果