如果谈到层次结构数据可视化只想到树形图,说到网络结构数据只想到力导向图~~,那么这篇文章也许能有一些帮助。按照图的数据结构,我们可以将图可视化分为2大类: 层次数据的可视化和网络数据的可视化,本文主要介绍层次数据可视化。
层次结构可以被抽象为树(Tree)结构, 树是图的一个特例,是只存在父节点和子节点之间连接的图。层次数据可视化的要点是对数据中层次关系的有效刻画,有2中主要的可视化方式: “节点-链接”和”空间填充”。
treevis.net: 德国的Hans-Jörg Schulz博士创建的,对层次数据可视化进行了分类总结。他们将层次数据可视化按照“空间维度”、“表现形式”、“对齐方式”这3个维度进行分类。
1. 节点-链接(node-link)
将单个个体绘制成一个节点,节点之间的连线表示个体之间的层次关系。
代表: 空间树、圆锥树、径向树、双曲树……
优点:直观清晰,擅长表示承接的层次关系。
缺点:当节点数目增加,特别是树的广度和深度相差较大时,该方法的可读性较差,大量节点聚集在屏幕的局部范围,屏幕空间的利用率底下。
1.1 原则
清晰有效地实现node-link方法需要考虑到如下几点:
- 节点位置的空间顺序和层次关系一致。
- 减少连线之间的交叉。
- 减少连线的总长度。
- 合适的长宽比,优化空间利用率(数据-墨水原则)。
1.2 布局方法
1.2.1 正交布局
特征: 节点在放置的时候按照水平或垂直对齐。
优点:与坐标轴一致的、比较规则的布局与人们的视觉识别习惯吻合。
缺点:当大型的层次结构,特别是广度特别大的层次结构,会导致不合理的长宽比,造成数据显示空间不足和屏幕空间浪费的问题。
节点-链接正交布局的局限性(上图展示了Flare软件包的子目录结构)
1.2.2 径向布局
特征: 根节点位于圆心,不同层次的节点被放置在半径不同的同心圆上。
优点:整个可视化布局呈圆形,能更好地利用空间。
缺点:在径向树中,圆周的大小随层次深度的增加而线性增长,而树节点则往往呈几何级增长。对于大型的层次结构,树的底部空间不够,会导致节点互相重叠。
径向树(Radial Tree)
1.2.3 环状径向树
径向树的一种变体,将每一棵树递归地采用径向布局形成环状结构。优点是子树的结构更加直观,缺点是随着层次的深入,子节点的空间占位逐渐变小。
环状径向树
1.2.4 圆锥树(Cone Tree)
一种在三维空间可视化层次数据的技术,结合了正交布局和径向布局两种思想。
圆锥树
1.2.5 双曲树(Hyperbolic Tree)
双曲树的拓扑结构和常规径向树一致,但布局空间不是欧几里得空间(Euclidean space), 而是双曲空间(hyperbolic space)。 在双曲空间里面,圆周随半径的增加呈现出几何级数的增长。
2. 空间填充(space-filling)
用空间中的区域来表示数据中的个体,并用外侧区域对内层区域的包围来表示层次关系。
代表: 树图(TreeMap)、旭日图(Sunburst)……
优点:擅长表示包含与从属的关系,能更高效地利用屏幕空间,可呈现更多的数据。
缺点:表达的数据层次信息不如node-link方法清晰。
2.1 树图(Tree Map)
用矩形表示层次结构里的节点,父子节点之间的层次关系用矩形之间的相互嵌套隐喻表示。
优点:可以充分利用所有的屏幕空间。
缺点:视觉效果不如node-link方法清晰。当层次深度过大时,用户解读较困难。
2.2 旭日图(Sunburst)
中心的圆代表根节点,各个层次用同心圆表示。
优点:相比树图,旭日图可以显示出中间层次的节点,更容易分辨层次结构。比node-link方法的空间利用率要好。
缺点:当树结构不平衡的时候,会导致某一部分的扇形向外延伸很长,造成不合理的长宽比。
2.3 Voronoi TreeMap
采用任意多边形来取代上述方法中的矩形空间。
2.4 Bubble TreeMap
每个节点都使用嵌套轮廓圆弧进行可视化。
3. 其他方法
3.1 相邻层次图(Adjacency diagram)
node-link方法能清晰直观地显示数据层次结构,space-filling方法能高效利用屏幕空间。相邻层次图则是2者的结合。
3.2 弹性层次图
中间层次的节点由树图法来表示。