数据可视化

数据可视化(Data Visualization)是指运用计算机图形学和图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。它涉及计算机图形学、图像处理、计算机辅助设计、计算机视觉及人机交互技术等多个领域。该技术的主要特点如下。

(1)交互性:用户可以方便地以交互的方式管理和开发数据。

(2)多维性:可以看到表示对象或事件的数据的多个属性或变量,而数据可以按其每一维的值,将其分类、排序、组合和显示。

(3)可视化:数据可以用图像、曲线、二维图形、三维图形和动画等来显示,并可对其模式和相互关系进行可视化分析。

数据可视化可以大大加快数据的处理速度,令时刻都在产生的大量数据得到有效的利用;可以在人与数据、人与人之间实现图像通信,从而使人们能够观察到数据中隐含的线索,为发现和理解科学规律提供了力的工具;可以实现对计算和编程过程的引导和控制,通过交互手段改变过程所依据的条件,并观察其影响。

数据可视化有助于工程过程的一体化和流线化,并能使工程的领导和技术人员看到和了解过程中参数的变化对整体的动态影响,从而达到缩短研制周期、节省工程全寿命费用的目的。

在前面已经介绍和分析了MATLAB在数据处理、运算和分析中的各种应用。和其他类似的科学计算工具相比,MATLAB图形编辑功能显得尤为强大。通过图形,用户可以直观地观察数据间的内在关系,也可以十分方便地分析各种数据结果。从最初的版本开始,MATLAB就一直致力于数据的图形表示,而且在更新版本的时候不断地使用新技术来改进和完善可视化的功能。MATLAB R2014b 推出了全新的 MATLAB 图形系统。全新的默认颜色、字体和样式便于数据解释。抗锯齿字体和线条使文字和图形看起来更平滑。图形对象便于使用–您可以在命令窗口中显示常用属性,并且对象支持熟悉的结构化语法,可以更改属性值。

本章介绍MATLAB中的绘图方法,以及如何编辑图形、标记图形等。

7.1  绘图的基本知识

7.1.1  离散数据和离散函数的可视化

众所周知,任何二元实数标量对可以用平面上的一个点表示,任何二元实数“向量对”可以用平面上的一组点表示。对于离散实函数,当以递增(或者递减)的次序取值时,根据函数关系可以求得同样数目的。当把所对应的向量用直角坐标中的点序列图示时,就实现了离散函数的可视化,当然图形上的离散序列所反映的只是某些确定的有效区间内的函数关系。需要注意的是:图形不能表现无限区间上的函数关系,这是由图形的原理决定的,并不是MATLAB软件本身的限制。

【例7-1】  用图形表示离散函数。

y=1./abs(n-6);                              %  准备离散点数据

plot(n,y,'r*','MarkerSize',20)           %  绘图

以上代码运行的结果如下,得到的图形如图7-1所示。

7.1.2  连续函数的可视化

与离散函数可视化一样,进行连续函数可视化也必须先在一组离散自变量上计算相应的函数值,并把这一组“数据对”用点图示。但这些离散的点不能表现函数的连续性。为了进一步表示离散点之间的函数情况,有两种常用的处理方法:(1)对区间进行更细的分割,计算更多的点,去近似表现函数的连续变化;(2)把两点用直线连接,近似表现两点间的函数形状。

在MATLAB中,以上两种方法都可以采用。但需注意:倘若自变量的采样点数不够多,则无论使用哪种方法都不能真实地反映原函数。

【例7-2】  用图形表示连续调制波形。

t1=(0:11)/11*pi;              %  自变量

y1=sin(t1).*sin(9*t1);        %  对应的函数值

t2=(0:100)/100*pi;

y2=sin(t2).*sin(9*t2);

%  以下为绘图,将几个图作为子图放在一起便于比较

subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图 (1)')

subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图 (2)')

subplot(2,2,3),plot(t1,y1,t1,y1,'r.')

axis([0,pi,-1,1]),title('子图 (3)')

subplot(2,2,4),plot(t2,y2)

axis([0,pi,-1,1]),title('子图 (4)')

以上代码运行的结果如图7-2所示。

图7-1 离散函数的可视化

图7-2  连续函数的可视化

7.1.3  可视化的一般步骤

本小节介绍可视化的一般步骤,其目的是让读者对图形的绘制过程有一个宏观的了解,如表7-1所示。具体细节将在后面介绍。

表7-1                                                    绘制图形的一般步骤

步    骤

典型命令

1.数据准备

选定所要绘图的范围

产生自变量采样向量

计算相应的函数值向量

t=pi*(0:100)/100

y=sin(t).*sin(9*t);

2.选定图形窗口及子图位置

默认打开Figure. 1,或当前窗口,或当前子图。可以用命令指定图形窗口和子图位置

subplot(2,2,3)

3.调用绘图命令(可以包括线型、色彩、数据点型)

plot(t,y,‘b-’)      %   用蓝色实线绘图

4.设置轴的范围与刻度、坐标网格

axis([0,pi,-1,1])    %  设置轴的范围

grid on           %  画坐标网格

5.图形注释:

图名、坐标名、图例、文字说明等

title(‘figure’)        %   图名

xlabel(‘t’); ylabel(‘y’)  %  轴名

legend(‘sin(t)’, ‘sin(t)。*sin(9*t)’)  %  图例

text(2,0.5,‘y=sin(t).*sin(9*t)’)% 文字说明

6.图形的精细修饰

利用对象属性值设置,利用图形窗口工具栏设置

set(h,‘MarkerSize’,10)

%  设置数据点大小

7.图形的导出与打印

%  采用图形窗口菜单操作

步骤1和3是最基本的绘图步骤。一般来说,用这两个步骤所画的图形已经具备足够的表现力,其他步骤并不是必须的,另外其他步骤的输入顺序也可以根据用户的需要或者喜好随意指定,一般情况下并不影响输出结果。二维绘图和三维绘图的基本步骤差不多,只是三维绘图多了一些属性控制操作方面的选择。