导读
数据可视化是数据描述的图形表示,旨在一目了然地揭示数据中的复杂信息。可视化的典型如纽约地铁图和人脑图。成功的可视化的美丽之处既在于其艺术设计,也在于其通过对细节的优雅展示,能够有效地产生对数据的洞察和新的理解。上上期,我们给大家着重介绍了20款较为优秀的数据可视化工具,想必大家已经认识到数据可视化在大数据行业的无比重要性。本期,我们将继续带领大家领略数据可视化之美。
EMC中国研究院 王天青
学习任何一门技术或者知识,笔者喜欢先学习理论,然后在实践中联系理论。就如人类在哲学上的三个终极问题:你是谁?你从哪里来? 要到哪里去?对于数据可视化这一技术,我们也需要问三个问题:数据可视化是什么?为什么要用数据可视化?以及如何用数据可视化。前面两个问题如同武功的心 法,不搞懂搞通,只能学习花拳绣腿,而不会长内力的。第三个问题涉及到方法学,如同武功的招式。本文将试图去回答前面两个问题,而把第三个问题留到下一篇 文章,先在在这里买个关子。
下面是wikipedia对“Data Visualization”的定义[1]:
Data visualization is the studyof the visual representation of data, meaning "information that has beenabstracted in some schematic form, including attributes or variables for theunits of information".
对这个直白的定义,笔者不甚满意,感觉就是字面上的翻译而已。笔者后来又看到另外一个的定义[2]:
Data visualization is thegraphical display of abstract information for two purposes: sense-making (alsocalled data analysis) and communication. Important stories live in our data anddata visualization is a powerful means to discover and understand thesestories, and then to present them to others.
这个定义就比较有内涵,而且它很好的回答了我们提出三个问题中的前两个:
1)数据可视化是用可视化的方式来展示从数据中抽取出的信息;
2)数据可视化是用 来给受众讲故事的。这第二点犹如醍醐灌顶,让笔者深刻认识到了数据可视化是有目的的,它不单纯只是好看,原来是要讲故事讲给大家听。来自大名鼎鼎的 FlowingData[3]网站的《Visualize This》[3]一书的第一章就叫做Telling Stories with Data。在笔者阅读Telling Stories with Data这一章节的时候,作者提出的“More than numbers”让笔者对数据可视化的Data有了更加深刻的认识。接下来笔者将数据和用数据讲故事展开进行论述,希望读者能有所收获。
数据,不仅仅是数字
笔者之前对数据可视化一直局限于什么饼图,柱状图,K线图等,而这些后面都是一些数字,因而不自觉的就认为数字就是数据。后来在项目中用JUNG[5]来 表示一组节点之间的关系,而Edge这一二元组已经超出了单纯数字的范畴。例如下图是Wikipedia和整个万维网链接关系的一个可视化例子[6]:
综上所述,数据不仅仅是数字,它可以是任意形式。而在可视化数据之前,我们要做的事情是找到数据分析的方法,将有用信息从数据中抽取,清洗和提炼出来,作为之后讲故事的素材。说到DataAnalysis,这是一个很大的Topic,EMC中国研究院的博客已经刊登了几篇文章,感兴趣的童鞋可以参考一下,笔者就不在这里展开了。接下来我们要做的事情就是用这些素材来讲故事给大家听。
用数据讲故事
一个好的可视化作品就如同一部好电影或者电视剧。众所周知,一部好的电影或者电视剧必然包括以下要素:1)好剧本(也就是一个好 故事,而且要适合在银幕上展现);2)好导演;3)好演员(并非一定是大演员,而是合适的演员);4)巧妙的讲故事手法。举个例子,最近热播的一部 《LastReport》[7](中文名叫做《终极审判》)就具有了一部好片子的潜力。首先它要讲的故事很扣人心弦(核导弹危机,正义官兵和邪恶政客,印 度洋一个美丽的小岛,高科技武器,多角关系),演员阵容非常适合这个故事(饰演Marcus舰长的演员相当到位),巧妙的讲故事手法(各种插叙,倒序 等),唯一的导演因为不是特别了解所以暂且不表。
用数据讲故事也是如此。当然这里的故事显然要比电影或者电视剧的故事简单很多,但是仍然包括以下要素:
1)场景,也就是这个故事 的背景,范围是什么;
2)主题,为什么要讲这个故事或者讲这个故事要说明什么,有些时候主题必须要明确,有些时候可以留个读者自己总结;
3)情节,如何叙 述这个故事。接下来你就必须挑选合适的演员,也就是数据,让他们来叙述这个故事。再次你必须找到合适的可视化方式,例如用什么图形,什么颜色,什么风格的 图标,来创新的展示数据。
干讲无用,让我们结合例子来深入探讨。下图是可视化作品:《TheExploding of Internet 2008》[8]。首先这个可视化作品要讲述的故事主题很明确:2008年互联网的爆炸式发展。选取的数据是2008年排名靠前的几个国家,网民数量,网 民占全世界网民的比例以及占本国公民的比例和全世界电子商务的交易金额及所占世界GDP的比例。数据展示的方式包括:世界地图(因为是国家,自然用地图是 一个不错的选择),不同颜色区分不同国家,不同大小的气泡表示不同国家网民的数量,用码表的方式表示比例。显然这是一个不错的数据可视化例子,故事背景明确,主题鲜明,数据展现,无论是数字还是比例,都非常醒目。
让我们再来看一个例子,这次的数据不仅仅是数字。下图是可视化作品:《Worldof Programming》[9]。这一作品要展示的是在编程领域的先驱们,以及各种编程语言的历史和目前排名的统计数据。因为故事包含几个部分,因此图中 也自然分成了三个部分。第一个部分是编程领域里面的先驱者们,第二部分是一个用时间轴来表示的各编程语言的历史。第三部分是三个主流编程相关网站用户使用 编程语言情况统计出来的编程语言排名。
第一部分中,每一个编程先驱者都配有一幅人物肖像画,名字,简介以及他/她最著名的算法或者发明的配图,非常形象而且能够抓住每个人的最大特点(贡献)。
第二部分中,作者也不仅是简单的使用了时间轴,而是在此基础上划分了不同时代,同时每个时代还配了一个小清新的图标,非常画龙点睛。
第三部分中,作者选取数据的方式很有讲究。本来排座次这个问题,公说公有理,婆说婆有理,作者选择了对三个主流编程相关网站的统计,结果也很能说明问题。同时在展现数据的时候,针对三个排名,采用了不同的展示方式(气泡图,代码示例,编译命令),也颇有新意。
笔者认为这幅作品唯一的遗憾是三个部分,尤其是第一部分和第二,三部分缺乏内在的连接,因此有待于进一步挖掘两者的内在联系。
再举一个例子,笔者在《程序员》杂志2011年第8期读到了这篇文章:数据可视化之美-《纽约时报》的一天[10](此文来自 《BeautifulVisualization: Looking at Data through the Eyes of Experts》[11]),它很好的阐述了数据可视化的步骤,值得大家好好参考一下。下面是简介:纽约时报的编辑试图创建一个可视化用于显示每天《纽约 时报》Web站点和手机站点在世界和美国的流量。具体的方法是创建了一个简单的世界地图,将一天之中对《纽约时报》Web站点的每次访问用一个小的黄色圆 圈表示,对移动站点的每次访问用一个小的蓝色圆圈表示。在收集数据,分析数据,可视化数据的过程中,他们用到了Python,Map/Reduce, Hadoop和Processing[12](这是一个工具,大家感兴趣可以参考一下《VisualizingData》[13]一书)。因为文章已经有详细介绍,笔者也就不在这里赘述。
总之,要让数据讲故事,并且讲好故事,我们还是要厘清故事,确定主题,确定数据及展现方式。大家可以多参考一些好的数据可视化作品,仔细分析,认真总结一下,自然而然,内力就上去了。
Reference
[1] http://en.wikipedia.org/wiki/Data_visualization
[2] http://www.interaction-design.org/encyclopedia/data_visualization_for_human_perception.html
[3] http://flowingdata.com/
[4] Visualize This: The FlowingData Guide to Design,Visualization, and Statisticshttp://book.flowingdata.com/
[5] JUNG (Java Universal Network/Graph Framework) - http://jung.sourceforge.net/
[6]http://upload.wikimedia.org/wikipedia/commons/b/b9/WorldWideWebAroundWikipedia.png
[7] Last Report http://tv.sohu.com/s2012/lastresort/
[8] The Exploding Interenet 2008 http://visual.ly/exploding-interenet-2008
[9] Designing The “World Of Programming” Infographichttp://www.smashingmagazine.com/2010/06/06/designing-the-world-of-programming-infographic/
[10] 数据可视化之美——《纽约时报》的一天http://www.programmer.com.cn/7496/
[11] Beautiful Visualization: Looking at Data through theEyes of Experts (Theory in Practice)http://www.amazon.com/Beautiful-Visualization-Looking-through-Practice/dp/1449379869
[12] Processing - http://processing.org/
[13] Visualizing Data - Exploring and Explaining Data withthe Processing Environmenthttp://shop.oreilly.com/product/9780596514556.do