暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第5章 数据可视化——5.2 二维图形绘制(1)

软件开发架构 2023-05-14
700


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指令的一般使用规范。

1plot指令使用规范一:plot(x,y)

语句说明:以x为横坐标,y为纵坐标,按照坐标(xj,yj)的有序排列绘制曲线。


2plot指令使用规范二:plot(y)

语句说明:其中y为一维实数数组,以1:n为横坐标,yj为纵坐标,绘制曲线(ny的长度)。


3plot指令使用规范三:plot(z)

语句说明:其中z为一维复数数组,以横轴为实轴,纵轴为虚轴,在复平面上绘制(real(zj),imag(zj))的有序集合的图形。


5-4plot指令使用示例一。

创建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运行结果


4plot指令使用规范四:plot(A)

语句说明:绘制矩阵A的列对它的下标的图形。对于m×n的矩阵A,有n个含有m个元素的数对,或是n条有m个点的曲线,且这n条曲线均采用颜色监视器上不同的颜色绘制而成。


5-5plot指令使用示例二。

创建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运行结果


5plot指令使用规范五:plot(x,A)

语句说明:绘制矩阵A对向量x的图形。对m×n的矩阵A和长度为m的向量x,绘制矩阵A的列对向量x的图形;如果x的长度为n,则绘制矩阵A的行对向量x的图形。向量x可以是行向量,也可以是列向量。


6plot指令使用规范六:plot(A,x)

语句说明:对矩阵A绘制向量x的图形。对于一个m×n的矩阵A和一个长度为m的向量x,对矩阵A的列绘制向量x的图形;如果x的长度为n,则对矩阵A的行绘制向量x的图形。向量x可以是行向量,也可以是列向量。


7plot指令使用规范七:plot(A,B)

语句说明:对矩阵A的行绘制矩阵B的列的图形。如果AB都是m×n的矩阵,则将绘制n条由m个有序对连成的曲线。


5-6plot指令使用示例三。

创建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运行结果


8plot指令使用规范八:plot(x,y,str)

语句说明:用字符串str指定的颜色和线型对y绘制x的图形。


9plot指令使用规范九:plot(x1,y1,str1,x2,y2,str2,…)

语句说明:用字符串str1指定的颜色和线型对y1绘制x1的图形,用字符串str2指定的颜色和线型对y2绘制x2的图形……每组参数值可以采用上述除复数值外的任何一种形式。str1,str2…可以省略,此时,MATLAB自动为每条曲线选择颜色和线型。


5-7plot指令使用示例四。

创建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-8plot指令使用示例五。

创建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命令则可以在onoff状态下交替转换,即起到触发的作用。


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运行结果


如果大家需要这个文档,可以在我的公众号(软件开发架构)中回复20230514,免费获取。


文章转载自软件开发架构,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论