网 络数据(Network Data)和我们以前介绍过的层次数据都属于图类数据(Graph Data)。和层次数据一样,网络数据在生活中也很常见,比如,交通图,互联网的连接,以及目前很热的社交网络,等等。下面的图显示了1991年互联网 (NSFNET)在地理上连接(呵呵,第一张图好像是不是有点眼熟?)。

上 面的可视化是特别针对包含和表达地理信息的网络数据。而更基本的网络数据常常主要用来表示不同人或事物之间的联系。因此最直观的可视化是把人或事物表达成 一个个节点,如果人和人或事物和事物之间有联系,就用线把相应的节点连起来。这种节点连接图(Node-Link Diagram)听上去很简单吧:张三和李四认识,李四和王五认识,张三和王五都认识赵六,在纸上随便画四个节点和四条线就能把这些人和关系表达的很清 楚。但实际生活中这种联系关系通常要复杂的多,一个人认识上百个人都是很正常的事,如果再在纸上随便画画,往往只能得到一堆乱麻。

怎 么解开这堆乱麻呢?一种想法是小心的安排节点的位置,减少线与线之间的交叉,从而降低视觉复杂度。实现这个想法的一种技术是采用物理上的弹簧模型,将节点 之间想象成是用弹簧连接的,然后把这些用弹簧连接的节点扔到桌面上,让这些弹簧自己弹啊弹,弹啊弹,最后总能停下来,达到一个平衡状态。这个状态下的节点 连接图,能力最小,线和线之间的交叉最小。这种方法的学名叫spring-embedder 或者 force-directed【1】。像下面的图就是用这种方法生成的。这个图是用一个叫Prefuse的软件生成的,网页上有Java程序演示整个平衡的过程。拖动中间的图里的任意节点,整个网络就会被拖动,并达到新的平衡位置。

上面的图里,我们可以大致看出两个群体(communtiy)。群体里的人关系紧密,而不同群体之间的关系比较松散。群体分析也是网络数据可视化的一个主要目的。

类似的可视化也可以在其他网站上看到。比如微软的学术搜索也用节点连接图来显示学者间的合作关系。 这些图看上去是不是比较整洁?至少不能算是堆乱麻吧。:)

【1】T. Fruchterman and E. Reingold. Graph drawing by force-directed placement. Software–
Practice and Experience, 21:1129–1164, 1991.

© 2010, 视物 | 致知. All rights reserved.

Related Posts: