第5章 数据可视化
知识要点
在科学的研究体系中,将数学公式与数据表现在图表中,是展示符号的具体物理含义及大量数据的内在联系和规律的科学有效的方法。
在MATLAB中可以绘制二维、三维和四维的数据图形,并且通过对图形的线型、颜色、标记、观察角度、坐标轴范围等属性的设置,将大量数据的内在联系及规律表现得更加细腻、完善。MATLAB提供众多的设备用图表来显示向量和矩阵,同时包括注释和打印这些图表。
MATLAB拥有大量简单、灵活、易用的二维和三维图形命令,并且用户可以在MATLAB程序中加入声音效果。本章将详细讲述MATLAB中的数据可视化技术。
学习要求
5.1 图形绘制
基于由浅入深的原则,本节将从最简单的平面上的点的表示入手,逐步深入,由离散数据的表示到连续数据的表示,使得读者掌握其中规律。
5.1.1 离散数据及离散函数
一个二元实数标量对(x0 ,y0 )可以用平面上的点来表示,一个二元实数标量数组[(x1 ,y1 )(x2 ,y2 )…(xn ,yn )]可以用平面上的一组点来表示。对于离散函数Y=f(X),当X为一维标量数组[x1 ,x2 ,…,xn ]时,根据函数关系可以求出Y相应的一维标量[y1 ,y2 ,…,yn ]。
当把这两个向量数组在直角坐标系中用点序列表示时,就实现了离散函数的可视化。当然,这些图形上的离散序列所反映的只是X所限定的有限点上或有限区间内的函数关系。应当注意的是,MATLAB是无法实现对无限区间内的数据的可视化的。
例5-1:离散数据和离散函数的可视化。
创建M文件并命名为logfigure.m(同时存为ex5_01.m),利用M文件编辑器在M文件中输入:
clear all X1 = [1 2 4 6 7 8 10 11 12 14 15 17 18 20]; Y1 = [1 2 4 6 7 8 10 10 8 7 6 4 2 1]; % 生成两个一维实数数组 figure(1) plot(X1 , Y1 , 'o' , 'MarkerSize' , 15) X2 = 1 : 20; Y2 = log(X2); % 根据log函数生成两个一维实数数组 figure(2) plot(X2 , Y2 , 'o' , 'MarkerSize' , 15)
运行M文件,结果如图5-1所示。
图5-1 logfigure.m运行结果
5.1.2 连续函数
在MATLAB中是无法画出真正的连续函数的,因此在实现连续函数的可视化时,首先必须将连续函数用在一组离散自变量上计算函数结果,然后将自变量数组和结果数组在图形中表示出来。
当然,这些离散的点还是不能表现函数的连续性的。为了更形象地表现函数的规律及其连续变化,通常采用以下两种方法:
(1)对离散区间进行更细的划分,逐步趋近函数的连续变化特性,直到达到视觉上的连续效果。
(2)把每两个离散点用直线连接,以每两个离散点之间的直线来近似表示两点间的函数特性。
例5-2:连续函数的可视化。
创建M文件并命名为cosfigure.m(同时存为ex5_02.m),利用M文件编辑器在M文件中输入:
clear all X1 = (0 : 12) * pi / 6; Y1 = cos(3 * X1); X2 = (0 : 360) * pi / 180; Y2 = cos(3 * X2); figure(1) subplot(2,2,1); plot(X1 , Y1 , 'o' , 'MarkerSize' , 3); xlim([0 2 * pi]) subplot(2,2,2); plot(X1 , Y1 , 'LineWidth' , 2); xlim([0 2 * pi]) subplot(2,2,3); plot(X2 , Y2 , 'o' , 'MarkerSize' , 3); xlim([0 2 * pi]) subplot(2,2,4); plot(X2 , Y2 , 'LineWidth' , 2); xlim([0 2 * pi])
运行M文件,结果如图5-2所示。
图5-2 cosfigure.m运行结果
5.1.3 图形绘制示例
例5-3:设函数 y = x + sinx + ex,试利用MATLAB绘制该函数在x∈[-π,π]上的图像。
(1)准备图形数据。用户需要选定数据的范围,选择对应范围的自变量,计算相应的函数值。根据要求,需要在命令行窗口中输入下列命令:
clear all x = - pi : 0.01 : pi; y = x + sin(x) + exp(x);
(2)使用plot函数绘制图形,即在命令行窗口中输入下列命令:
plot(x , y)
得到的结果如图5-3所示。
图5-3 绘制的函数图像
(3)为了更好地观察各个数据点的位置,给背景设置网格线,同时采用空心圆圈来标记数据点,并将曲线的颜色设置成红色。因此,在命令行窗口中输入:
plot(x , y , '-ro') grid on
得到的结果如图5-4所示。
图5-4 添加网格线,修改曲线样式
(4)给图形添加一些注释。为了进一步使图形具有可读性,用户还需要给图形添加一些注释,例如图形的名称、坐标轴的名称、图例及文字说明等。
例如本示例给图形取名为“y的函数图像”;x坐标轴和y坐标轴分别取名为“x”和“y”;图例设置为“ y = x + sinx + ex”。因此,需要在命令行窗口中输入:
title('y的函数图像'); xlabel('x'); ylabel('y'); legend('y = x + sinx + e^{x}');
得到的结果如图5-5所示。
图5-5 添加图形注释
(5)图形的输出。完成图形的绘制和编辑之后,用户可以将图形打印或者在图形窗口的菜单栏中选择File→Save As命令,将图形保存成用户需要的格式。
5.1.4 图形绘制的基本步骤
通过5.1.3节的示例可以总结出,利用MATLAB绘制图形大致分为如下7个步骤:
(1)数据准备。主要工作是产生自变量采样向量,计算相应的函数值向量。
(2)选定图形窗口及子图位置。在默认情况下,MATLAB系统绘制的图形为figure.1、figure.2……
(3)调用绘图函数绘制图形,例如plot函数。
(4)设置坐标轴的范围、刻度及坐标网格。
(5)利用对象属性值或者图形窗口工具栏设置线型、标记类型及其大小等。
(6)添加图形注释,例如图名、坐标名称、图例、文字说明等。
(7)图形的导出与打印。