在这个到处都是信息的时代,我们无论主动被动都会时不时接收到若干的数据集合,如何理解这些数据往往依赖于接收者的知识技能背景,但是这个不是非常重要,因为好奇心总是会驱使着人们去尝试些有挑战性的工作。于是“数据可视化”正逐渐成了越来越多的人理解、交流获取到的数据集的一个必不可少的过程。
正是基于以上原因,我开始看《Visualizing Data》这本书,尽管我的候选方向不包括“计算信息设计(Computational Information Design)”。如你所见,我的知识背景是程序设计,跟艺术没有关系,这便是我想澄清的一点,关于“数据可视化思维”。由于“数据可视化”多少涉及到一些图形图像方面的知识,于是有人认为这应该由艺术系的人去搞,至少搞这个需要艺术细胞,他们可能还会再给出一些诸如“没有艺术细胞,即使会操作 PhotoShop也很难作出优秀的图”之类的理由。但我想说得是,这个完全是两个抽象层次的概念,互相促进又互相正交:“数据可视化”的核心是how“ 可视化”,而所谓需要艺术细胞的那些活则是“可视化”what,所以“数据可视化”一样需要计算机方面的知识,甚至可能还需要计算机图形学乃至数学知识, 是不还需要“计算机逻辑细胞”?!
罗嗦了一大堆,该回到主题上了。之所以会出现此文,是因为我感觉《Visualizing Data》还是有些让人不尽人意的地方。比如,作者使用的教学语言是他自己发明的processing, 这一简单的编程环境和API,之所以不选通用语言如python,java等,我猜原因就是上面分析中涉及的,读者的知识背景比较多样,不一定都具有编程 基础。但是,不得不说……基于java的本地gui程序在我的linux系统上一直表现极差,比如本书相当于的“hello world”例子就总是让我死机,因此对java产生偏见了(要知道java也是我曾经最喜欢的语言之一),所以……我删了processing。转而选了flash/air/actionscript3.0,这个号称在图形前端表现开发上处于领先地位的编程语言(当然这个是我的老本行,尽管以前很少使用图形api);另一方面,虽然本书对如何获取、理解数据都介绍的比较详尽,但是在how编程这点上让我云里雾里的,这个大概是因为processing本身是带了源码的,看源码就能一目了然的缘故吧,总之没有考察这点。而且语言之间多少有点差异,况且flash的普及度更高一点,一方面自己按照要求全部实现本身就是一个很好的学习过程,一方面刚好可以和大家分享。
所以本系列文章就按章节分享书中实例的AIR1.5/ActionScript3.0实现。当然,我并不想原封不动的翻译processing代码,而且与“可视化”这个目的没有直接关系的部分也不予细究,比如如何生成随机数等。这里跟大家说声抱歉,毕竟这个学习过程在我的方向上只是一个支线。在具体的文章里,与书中代码差异交大的部分我会特别说明的,而且我的as3代码可能没有注释,因为代码本身就很容易理解(不考虑我们所喜欢的代码风格差异)。
最后简单概况一下“可视化数据”的七个步骤:
1.获取数据,无所谓是来自文件、磁盘亦或是网络等;
2.分析数据结构,分类排序;
3.过滤,去掉所有不感兴趣的数据;
4.综合使用数学、统计、模式识别等等方法来挖掘出一些特征数据;
5.选择诸如棒图、列表、树等的可视化模型来描绘数据;
6.精炼基本表示法,使数据描绘的更清楚,更具视觉效果;
7.添加一些用于控制或操作数据的交互方法。
http://wargrey.yo2.cn/go/36160.html