布局是网络可视化中的重要概念,指将点和边通过某种策略进行排布,应尽可能满足以下4个原则:
- 节点均匀分布在有限的区域内
- 避免边的交叉和弯曲
- 保持边的长度一致
- 整体布局能反映图内在的特性
Gephi的布局模块(Layout)可根据某种策略对节点和边进行排布,使图形既具有特定需要的合理性,也易于视觉识别。布局算法是Gephi的核心,默认提供12种布局算法,可分为两类:力引导布局、辅助编调整布局。
1. 力引导布局
力引导布局通过能够模仿物理世界中的引力和斥力,将图中的节点模拟成原子,通过模拟原子间的力场来计算节点间的位置关系,使系统最终进入一种动态平衡
Gephi的力引导布局有6种,即Force Atlas、Force Atlas 2、Fruchterman Reingold、OpenOrd、Yifan Hu、Yifan Hu Proportional。
(1)Force Atlas
Force Atlas布局使图更紧凑、可读性强。主要参数如下:
- Inertia(惯性):值愈大,图的摇摆幅度越大。
- Repulsion strength(斥力强度):每个节点排斥其他节点的强度,值越大,节点的距离越大。
- Attraction strength(吸引强度):连接节点之间的吸引力的强度,值越大,有连接的节点越被拉近。
- Gravity(重力):值越小,图越分散;值越大,图越压缩。
- Speed(速度):布局运动的速度,值越大,图的布局速度越快。
(2)Force Atlas 2
Force Atlas 2是改进的Force Atlas算法,速度更快。主要参数如下:
- Scaling(缩放):节点的斥力强度,值越大,斥力越大,图越稀疏。
- Stronger Gravity(更强的重力):一个已经定义好的较强的重力。
- Gravity(重力):自定义的重力值,可以比“更强的重力”更强。
- Dissuade Hubs(劝阻Hubs):只有输入的边会被推到边缘。
- LinLog模式:线性和对数模式的切换。
- Prevent Overlap(防止重叠):可以把重叠的节点展开。
- Tolerance(Speed)/容差(速度):布局速度的选取,较小的数值速度较慢,但精度更高。
(3)Fruchterman Reingold
Fruchterman Reingold简称FR,FR布局基于再次改进的弹性模型,该布局算法遵循两个简单的原则,即有连接的节点互相靠近和无连接的节点互相排斥。主要参数如下:
- Area(区):定义图形的幅度,值越大图越大,也越稀疏。
- Gravity(重力):定义重力值,值越大重力越强,节点越被中心吸引。
- Speed(速度):定义布局的速度,值越大布局速度越快,但也越不精确。
(4)OpenOrd
OpenOrd布局是一种新的力引导布局,支持多核、并行。OpenOrd布局的Stages(阶段)分为Liquid(液体)、Expansion(扩张)、Cooldown(冷却)、Crunch(紧缩)和Simmer(煨)5个过程,适合处理节点较多的图;对于节点较少的图形,运行起来效果并不是很好。
(5)Yifan Hu
Yifan Hu布局也是力引导布局的改进版,由胡一凡在2005年提出,在多层级力引导算法中引入了超节点的概念。该布局算法中,将一个节点与它远处一簇节点之间的斥力当作此节点与一个超节点间的斥力来计算,从而大大减少了计算量,使得总计算复杂度下降,可处理几十万个节点规模的图。主要参数如下:
- Optimal Distance(最佳距离):值越大,整个图的尺寸越大。
- Relative Strength(相对强度):值越大,节点越稀疏;值越小,节点越紧密。
(6)Yifan Hu Proportional
Yifan Hu比例布局的参数与Yifan Hu布局的参数相同,实际上这两个布局所起到的作用是相同的,扩展(收缩布局的参数只有比例因子,比例因子的设置方法如下:
- 如果比例因子为1,那么图不会放大也不会缩小。
- 如果比例因子大于1,那么图会放大,且值越大,放大的比例越大。
- 如果比例因子小于1,那么图会缩小,且值越小,缩小的比例越大。
- 如果比例因子为负数,那么在放大或缩小的同时,也会从上下、左右两个方面颠倒图形。
2. 辅助布局
辅助布局是根据某种预先定义的规则对图进行布局,辅助布局有6种,Noverlap、Rotate、Contraction、Expansion、标签调整、随机布局。
(1)Noverlap
Noverlap(交叠布局)可以防止参数的重,Noverlap布局中不考虑标签的重叠。。主要参数如下:
- speed(速度):布局速度。一般都是速度越快,布局越差
- ratio(节点边距) :间距为1的时候,节点会连在一起,随着间距增大,节点变的越来越分开。当简间距小于1的时候,允许节点重叠。
- margin(幅度):增加幅度半径。当幅度为0的时候,没有余量;幅度增大节点分离越大,负的幅度的时候允许重叠。
(2)Rotate
Rotate布局很简单,其可以将图形从整体上进行顺时针或者逆时针的旋转,从而进行布局。唯一的参数是Angle(旋转角度,旋转角度可以是正的,也可以是负的值。
(3)Contraction(Expansion
Expansion(扩展)、Contraction(收缩)布局是对原始图的按照比例的扩展和收缩,两者唯一的参数是Scale factor(因子。
Scale factor取值有以下几种情况:
- 因子=1,不扩展,不收缩。
- 因子>1,扩展,值越大,扩展越大。
- 因子<1,收缩,值越小,越收缩。
- 因子为负数: 在扩展和收缩的同时,进行图形的颠倒。
(4)Label Adjust
Label Adjust(标签调整)布局主要可以防止标签的重叠,参数包括Speed(速度,决定了布局的速度;Include Node size(包括节点大小):是否使得重叠的节点分散。
(5) Random Layo
Random Layout(随机布局)在一个Space size(空间大小的参数)上进行随机的布局。