目录
前言
一、数据可视化概述
(一)基本概念
(二)发展背景
(三)基本方式
(四)适用范围
(五)相关分析
二、数据可视化工具
(一)桌面可视化技术
(二)OLAP可视化工具
(三)Web可视化技术
通过图表可视化分析数据结果,不仅能让数据更加生动、形象,便于用户发现数据中隐含的规律与知识,而且这也是软件工程师与数据工程师合作的最终工作成果,有助于帮助用户理解大数据技术的价值。在Hadoop生态群中,核心部件(如HDFS、Yarn和HBase等)都提供可视化的集群管理功能,便于用户直观、快速地了解集群的运行状态;Kylin、Superset及Zeppelin等OLAP工具的重要任务是为用户提供在线可视化分析功能。但在企业级应用开发中,在前面提到的技术无法直接集成到应用系统,还需要使用基于桌面、Web等的可视化组件进行定制开发。 本章简单介绍数据可视化的发展历史、可视化工具分类,重点结合ECharts介绍Web可视化组件生成方法,并给出Java Web开发与相关大数据组件的数据集成,以展现数据可视化结果。
数据可视化,是指将结构或非结构化的数据转换成适当的可视化图表,然后将隐藏在数据中的信息直接展现在人们面前,是一种关于数据视觉表现形式的科学技术研究。
它是一个处于不断演变之中的概念,其边界在不断地扩大。主要指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、图像处理、计算机视觉以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。与立体建模之类的特殊技术方法相比,数据可视化所涵盖的技术方法要广泛得多。
数据可视化技术包含以下几个基本概念:
1、数据空间:是由n维属性和m个元素组成的数据集所构成的多维信息空间;
2、数据开发:是指利用一定的算法和工具对数据进行定量的推演和计算;
3、数据分析:指对多维数据进行切片、块、旋转等动作剖析数据,从而能多角度多侧面观察数据;
4、数据可视化:是指将大型数据集中的数据以图形图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。
数据可视化已经提出了许多方法,这些方法根据其可视化的原理不同可以划分为基于几何的技术、面向像素技术、基于图标的技术、基于层次的技术、基于图像的技术和分布式技术等等。
数据可视化起源于18世纪,William Playfair在《The Commercial and Political Atlas》一书中首次使用了柱形图和折线图表示国家的进出口量。19世纪初,他在《Statistical Breviary》一书里,又首次使用了饼状图。柱状图、折线图和饼状图是至今最常用的数据可视化的表现形式。到了19世纪中叶,数据可视化主要被用于军事用途,用来表示军队死亡原因、军队的分布图等,其中,南丁格尔图最为著名的例子。
南丁格尔图是一种圆形的直方图,它将战争中不同形式死亡的人数以图形式展现在人们眼前,南丁格尔图的背后有着一段为敬畏生命而存的历史。在19世纪50年代,英国、法国、土耳其和俄国进行了克里米亚战争,英国的战地战士死亡率高达42%。弗罗伦斯·南丁格尔女士率领38名护士在战争前线的战地医院服务。当时的野战医院卫生条件极差,资源极度匮乏,她竭尽全力排除各种困难,为伤员解决必须的生活用品和食品,并对他们悉心护理。每个夜晚,她都手执风灯巡视,伤病员们亲切地称她为“提灯女神”,战争结束后,被英国民众推崇为民族英雄。南丁格尔在分析士兵致死原因时发现,战地医疗卫生条件不足导致的致死率远高于战场直接致死率。为引起军方和决策者重视,她创造性地提出类似鸡冠花图的图表,也就南丁格尔的玫瑰图(如下图所示),说服政府重视改善前方将士的卫生情况和做好食品与药品的保障工作。
在南丁格尔图中,雷达轴分为12个区间,分别代表了从1854年4月至1855年3月共12个月份,最内层区域代表因受伤而死亡的人数,中间一层黑色区域代表因其他原因死亡的人数,最外层区域代表由于可治疗的疾病而死亡的人数。通过该图可以很直观地发现,本可采用治疗避免死亡的人数远远大于战争的直接伤亡人数。
进入20世纪,数据可视化有了飞跃性的发展。数据可视化的方式可以分为面积与尺寸可视化、颜色可视化、图形可视化、地域空间可视化和概念可视化等。
1、面积与尺寸可视化
对同一类图形(例如柱状、圆环图等)的长度、高度或面积加以区别,表达不同指标对应的指标值之间的对比。制作这类可视化图形需要用数学公式计算出准确的尺度和比例。
2、颜色可视化
通过颜色的深浅来表达指标值的强弱和大小,是数据可视化设计的常用方法,用户可直观地发现哪一部分指标的数据值更加突出,例如,热力图。
3、图形可视化
在设计指标及数据时,使用有对应实际含义的图形结合呈现数据,会使数据图表更加生动,便于用户理解图表要表达的主题。
4、地域空间可视化
当指标数据要表达的主题与地域有关联时,一般会选择用地图作为大背景。这样用户可以直观地了解整体的数据情况,同时也可以根据地理位置快速地定位到某一地区来查看详细数据。
5、概念可视化
通过将抽象的指标数据转换成人们更熟悉、更容易感知的数据,用户便更容易理解图形要表达的意义。
关于数据可视化的适用范围,存在着不同的划分方法。一个常见的关注焦点就是信息的呈现。迈克尔·弗兰德利(2008),提出了数据可视化的两个主要的组成部分:统计图形和主题图。《Data Visualization: Modern Approaches》(意为“数据可视化:现代方法”)(2007),概括阐述了数据可视化的下列主题 :
1、思维导图
2、新闻的显示
3、数据的显示
4、连接的显示
5、网站的显示
6、文章与资源
7、工具与服务
所有这些主题全都与图形设计和信息表达密切相关。
另一方面,Frits H. Post (2002)则从计算机科学的视角,将这一领域划分为如下多个子领域:
1、可视化算法与技术方法
2、立体可视化
3、信息可视化
4、多分辨率方法
5、建模技术方法
6、交互技术方法与体系架构
数据可视化的成功,应归于其背后基本思想的完备性。依据数据及其内在模式和关系,利用计算机生成的图像来获得深入认识和知识。其第二个前提就是利用人类感觉系统的广阔带宽来操纵和解释错综复杂的过程、涉及不同学科领域的数据集以及来源多样的大型抽象数据集合的模拟。这些思想和概念极其重要,对于计算科学与工程方法学以及管理活动都有着精深而又广泛的影响。《Data Visualization: The State of the Art》(意为“数据可视化:尖端技术水平”)一书当中重点强调了各种应用领域与它们各自所特有的问题求解可视化技术方法之间的相互作用。
1、数据采集
数据采集(有时缩写为DAQ或DAS),又称为“数据获取”或“数据收集”,是指对现实世界进行采样,以便产生可供计算机处理的数据的过程。通常,数据采集过程之中包括为了获得所需信息,对于信号和波形进行采集并对它们加以处理的步骤。数据采集系统的组成元件当中包括用于将测量参数转换成为电信号的传感器,而这些电信号则是由数据采集硬件来负责获取的。
2、数据分析
数据分析是指为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。数据分析与数据挖掘密切相关,但数据挖掘往往倾向于关注较大型的数据集,较少侧重于推理,且常常采用的是最初为另外一种不同目的而采集的数据。在统计学领域,有些人将数据分析划分为描述性统计分析、探索性数据分析以及验证性数据分析;其中,探索性数据分析侧重于在数据之中发现新的特征,而验证性数据分析则侧重于已有假设的证实或证伪。
数据分析的类型包括:
(1)探索性数据分析:是指为了形成值得假设的检验而对数据进行分析的一种方法,是对传统统计学假设检验手段的补充。该方法由美国著名统计学家约翰·图基命名。
(2)定性数据分析:又称为“定性资料分析”、“定性研究”或者“质性研究资料分析”,是指对诸如词语、照片、观察结果之类的非数值型数据(或者说资料)的分析。
2010年后数据可视化工具基本以表格、图形(chart)、地图等可视化元素为主,数据可进行过滤、钻取、数据联动、跳转、高亮等分析手段做动态分析。
3、数据治理
数据治理涵盖为特定组织机构之数据创建协调一致的企业级视图(enterprise view)所需的人员、过程和技术,数据治理旨在:
(1)增强决策制定过程中的一致性与信心
(2)降低遭受监管罚款的风险
(3)改善数据的安全性
(4)最大限度地提高数据的创收潜力
(5)指定信息质量责任
4、数据管理
数据管理,又称为“数据资源管理”,包括所有与管理作为有价值资源的数据相关的学科领域。对于数据管理,DAMA所提出的正式定义是:“数据资源管理是指用于正确管理企业或机构整个数据生命周期需求的体系架构、政策、规范和操作程序的制定和执行过程”。这项定义相当宽泛,涵盖了许多可能在技术上并不直接接触低层数据管理工作(如关系数据库管理)的职业。
5、数据挖掘
数据挖掘是指对大量数据加以分类整理并挑选出相关信息的过程。数据挖掘通常为商业智能组织和金融分析师所采用;不过,在科学领域,数据挖掘也越来越多地用于从现代实验与观察方法所产生的庞大数据集之中提取信息。
数据挖掘被描述为“从数据之中提取隐含的,先前未知的,潜在有用信息的非凡过程”,以及“从大型数据集或数据库之中提取有用信息的科学”。与企业资源规划相关的数据挖掘是指对大型交易数据集进行统计分析和逻辑分析,从中寻找可能有助于决策制定工作的模式的过程。
6、电商数据
电商数据可视化,是获得信息的最佳方式之一,通过视觉化方式,快速抓住要点信息。另外,电商数据通过视觉化呈现数据,也揭示了令人惊奇的模式和观察结果,是不可能通过简单统计就能显而易见看到的模式和结论。“通过视觉化,我们把信息变成了一道可用眼睛来探索的风景线,一种信息地图。当你在迷失在信息中时,信息地图非常实用。”在电商行业尤为如此。
根据可视化工具的使用方式使用用户的不同,可分为桌面数据可视化技术(如Excel、R可视化和Python可视化等)、在线数据可视化技术(Oracle BI、Superset等)和Web数据可视化技术(如D3.js、echart等),下面就代表型的工具进行介绍。
1、Microsoft Excel
Microsoft Excel是常用的一款办公软件。它具有的直观的界面、出色的计算功能和图表工具使其成为最流行的个人计算机上的数据处理软件。获取数据后,可先使用Excel进行数据预处理,采用手动或自动方式进行数据输入;接着进行格式设置,改变单元格区域外观等;对处理好的数据,可使用排序、筛选等方法进行数据分析与分类汇总;最后进行可视化处理,以更加直观地向用户展示数据。
Microsoft Excel中的常用图表有柱形图、条形图、折线图、面积图、饼图和散点图等。作为一个入门级工具,Microsoft Excel是快速分析数据的理想工具,也能创建供内部使用的数据图。通过Microsoft Excel绘制的图像可以方便地嵌入Microsoft Solutions,Word和Microsoft Solutions Powerpoint中,是数据可视化的利器之一。
2、SPSS
统计产品与服务解决方案(Statistical Product and Service,SPSS),是最早采用图形菜单驱动界面的统计软件,它的突出优势在于用户操作界面友好,结果输出界面美观。用户只需要具备一些基本的Windows操作知识,并掌握统计分析原理,就可以将SPSS运用在科研工作中,深受社会科学、统计学和医学领域研究者喜爱。SPSS采用的是与Microsoft Excel类似的方式输入与管理数据,数据接口较为通用,能方便地从其他数据库中读入数据。其统计过程包括了常用的、较为成熟的统计过程,完全可以满足非统计专业用户的需求。
SPSS输出结果十分美观,支持HTML格式和文本格式的转存。由于SPSS for Windows可以直接读取EXCEL及DBF数据文件,易学、易用,已推广到多种各种操作系统的计算机上,它与SAS、BMDP并称为国际上最有影响的三大统计分析软件。
3、R可视化
R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个集统计分析与图形显示于一体的用于统计计算和统计制图的优秀工具。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统。
用户可以在R官方网站及其镜像中下载任何有关的安装程序、源代码、程序包及文档资料。标准的安装文件自身就带有多个模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。同时,R还是一种编程语言,具有语法通俗易懂、易学易用和资源丰富的优点。大多数最新的统计方法和技术都可以在R中直接获取。
R具有强大的用户交互性,它的输入/输出都是在同一个窗口进行,输出的图形可以直接保存为JPG、BMP、PNG等图片格式,还可以直接保存为PDF文件,并提供与其他编程语言、数据库交互的接口。
ggplot2是R语言中一个功能强大的作图软件包,源于其自成一派的数据可视化理念。当熟悉了ggplot2的基本方法后,数据可视化工作将变得非常轻松而有条理。用户只需要完成初始化、绘制图层、调整数据相关图形元素、调整数据无关图形元素几个步骤就能完成绘制。
4、基于Python可视化
Python有许多可视化工具,其中,Matplotlib是用于创建出版质量图表的桌面绘图包。matplotlib的目的是为了构建一个MATLAB式的绘图接口。除图形界面显示外,它还可以把图片保存为pdf、svg、jpg、png、gif等形式。
Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过Matplotlib,仅需要几行代码,开发者便可以生成直方图、条形图和散点图等。Matplotlib中的基本图表包括的元素有x轴和y轴、水平和垂直的轴线、x轴和y轴刻度、刻度标示坐标轴的分隔,包括最小刻度和最大刻度、x轴和y轴刻度标签、表示特定坐标轴的值、绘图区域和实际绘图的区域。
Matplotlib所绘制的图表中的每个绘图元素,例如,线条Line2D、文字Text、刻度等在内存中都有一个对象与之对应。为了方便快速绘图,Matplotlib通过pyplot模块提供了一套与MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在API内部。
Seaborn基于Matplotlib提供内置主题、颜色调色板、函数、可视化单变量、双变量和线性回归等工具,使作图变得更加容易。
1、Oracle BI
Oracle BI Data Visualization Desktop具备可视、自助、简单、快速、智能、多样的特性,为用户提供个人桌面应用程序,以便用户能够访问、探索、融合和分享数据可视化。Oracle BI有着丰富的可视化组件,可实现对颜色、尺寸、外形的创新性使用模式以及多种坐标系统。并通过Html5进行渲染,还可以选择或制作个性化的色系。Oracle BI新增了列表、平行坐标、时间轴、和弦图、循环网络、网络、桑基和树图等。Oracle BI对大多数数据通过可视化方式进行整理、转换操作。可在面板和分析注释之间自由切换,为用户提供友好的数据源页面,还提供打印面板和分析注释页面;支持导出为PDF和PowerPoint格式。Oracle BI向用户提供数据模式的自动检测,能更好地帮助用户了解数据及完成数据可视化。
2、微软Power BI
微软Power BI是一套商业分析工具,可连接数百个数据源,简化了数据准备流程并提供即席分析功能。Microsoft Excel在很早以前就支持了数据透视表,并基于Excel开发了相关的BI插件,如用于数据获取和数据整理的Power Query,用于建模分析PowerPrivot,图表交互工具Power View和基于地图的数据可视化工具Power Map等。相比于其他同类产品,它有着无可比拟的天然优势。熟悉Excel报表和BI分析的用户可以快速上手,甚至可以直接使用以前的模型。Power BI已经支持包括Excel、CSV、XML、Json、文本文件等多种文件数据源及常见Access、MSSQL、Oracle、Mysql等关系数据库。
3、SuperSet
SuperSet是一款开源的OLAP及数据可视化前端工具,是由知名在线房屋短租公司Airbnb公司开源的一款数据探索及数据可视化工具。SuperSet底层使用Python开发,整个项目的后端使用了Flask、Pandas和SQLAlchemy,其中,Pandas用于分析,SQLAlchemy作为数据库的ORM、Flask AppBuilder用作鉴权、规则及数据库事物操作。
SuperSet支持的数据源有:MySQL、Postgres、Presto、Oracle、sqlite、Redshift、MSSQL以及Druid。SuperSet可以支持十几种可视化图表,用于将查询返回的数据做可视化展示,但是其可视化目前只支持每次可视化一张表,不支持join连接,且过于依赖数据库的快速响应。
1、Flex
Flex用于构建和部署基于Adobe Flash的跨平台互联网应用程序。Flex允许在所有主流的浏览器、桌面、智能手机、平板电脑和智能电视中一致地部署应用。其目标是更快、更简单地开发富互联网应用程序(Rich Internet Application,RIA)。Flex的基本架构包括4个部分:Adobe SDK、Adobe Flex Charting、Adobe Flex Data Services和Adobe Flex Builder。Flex能让开发者在无需学习Flash情况下,直接进行Flash RIA编程。
Flex采用GUI开发,使用MXML或ActionScritp。MXML是用来描述用户界面的遵循W3C XML标准的语言,可以使用任何文本编辑器进行编写。Flex 具有多种组件,主要包括控件、容器和图表,它们具备的共同特征包含了尺寸、事件、样式、行为和皮肤。通过组件可实现Web Services、远程对象、Drag and Drop、列排序、图表等功能;FLEX内建了动画效果和其它的简单互动界面等内容。Flex的优势是源于Adobe Flash,能做出其它应用无法完成的可视化效果。
2、Silverlight
Microsoft Silverlight是一个跨浏览器跨平台的插件,为网络带来了下一代基于.NET Framework的媒体体验和RIA应用程序。对开发设计人员而言,Silverlight是一种融合了微软的多种技术的Web呈现技术,提供了一套开发框架,通过使用基于向量的图层技术,支持任何尺寸图像,并与Web开发环境实现了无缝连接。
Silverlight不仅允许元素与内容的适应,提供预制控件等;而且还可以轻松地创建图形,然后使用它们去自定义控件,如滚动条样式等。对每个控件Silverlight都提供了相应的模板,可以在不必修改任何代码的情况下改变控件的布局和外观。
3、JavaScript可视化技术
基于JavaScript的可视化技术是软件工程师的利器。常见的JavaScript数据可视化工具有ECharts、FushionCarts、Dgraphs、Datawrapper、Google Charts、HighCharts和D3.js等。
(1)D3.js
D3(Data Driven Documents)是支持SVG渲染的一种JavaScript库。D3提供了各种简单易用的函数,大大简化了JavaScript操作数据的难度。由于它本质上是JavaScript,因此,使用JavaScript也可以实现所有功能,但它能大大减少数据可视化编码的工作量。D3已经将生成可视化的复杂步骤精简到了几个简单的函数,用户只需要输入几个简单的数据,就能够将数据转换为各种绚丽的图形。D3还提供了大量的除线性图和条形图之外的复杂图表样式,例如,Voronoi图、树形图、圆形集群和单词云等。
(2)Highcharts
Highcharts是一个功能强大、开源、美观、图表丰富、兼容绝大多数浏览器的纯JS图表库。目前支持直线图、曲线图、面积图、曲线面积图、面积范围图、曲线面积范围图、柱状图、柱状范围图、条形图、饼图、散点图、箱线图、气泡图、误差线图、漏斗图、仪表图、瀑布图和雷达图共18种类型图表,其中,很多图表可以集成在同一个图形中形成综合图。Highcharts基于jQuery框架开发,所以需要在页面引入jQuery,它能够很方便快捷地在Web网站或Web应用程序中添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。
对需要比较的数据,Highcharts提供了多轴支持,并且可以针对每个轴设置其位置、文字和样式等属性。它能够很便捷地在Web网站或Web应用中添加交互性的图表,并在创建图表后对图表的任意点、线和文字等进行增加、删除和修改操作。结合jQuery、MooTools、Prototype等JavaScript框架提供的Ajax接口,可以实时地从服务器取得数据并实时刷新图表。Highcharts支持JS数组、JSON文件、JSON对象和表格数据等多种数据形式。
(3)ECharts
ECharts是百度公司开发的开源数据报表插件,也是一个纯JavaScript的图表库,可以流畅地运行在 PC 和移动设备上,兼容当前绝大部分浏览器(如IE8/9/10/11、Chrome、Firefox、Safari等),底层依赖轻量级的Canvas类库ZRender,提供直观、生动、可交互、可高度个性化定制的数据可视化图表。ECharts3除了提供了常规的折线图、柱状图,散点图、饼图、K线图、盒形图、热力图、线图外,还提供了用于地理数据可视化的地图,用于关系数据可视化的关系图,用于 BI 的漏斗图、仪表盘等,并且支持图与图之间的混搭。
百度公司发布ECharts之后得到了业界的认可和好评,成为中国数据可视化领域的热门报表框架,并入选了2013年国产开源软件10大年度热门项目。中央电视台还曾通过百度地图的数据可视化定位功能来播报国内春节期间的人口迁徙情况。