Introduction
ForceAtlas2 是一种力导向图布局方法,设计ForceAtlas2的一个重要目的是希望能对布局变化进行连续地展现,同时让用户有一个良好的使用体验(比如收敛的时间不能过慢),另一个目的是用于进行大型网络结构的展现,所以ForceAtlas2需要适应大量的数据并且保留足够多的细节信息。
Layout Design
Energy Model
(attraction,repulstion) model
attraction,repulstion model(i.e. (a,r)-model), 已知一个layout p, 两个节点 u,v.
attraction between u,v:
$$
\omega_{(u,v)}|p_u-p_v|^a\overrightarrow{p_up_v}
$$
repulsion between u,v:
$$
\omega_u\omega_v|p_u-p_v|^r\overrightarrow{p_up_v}
$$
其中$|p_u-p_v|$指u和v的距离,在之后都用d(u,v)来表示,ω表示权值,一般情况下?$a\geq 0, r\geq 0$。
(a-r) model in ForceAtlas2
在ForceAtlas2中:a=1,r=-1.
attraction:
$$
F_a(u,v)=d(u,v)
$$
repulsion:
$$
F_r(u,v)=k_r\frac{(deg(u)+1)(deg(v)+1)}{d(u,v)}
$$
其中的阻力包含权值大小deg表示与该节点相连的边的数量。
modification of ForceAtlas2
- LinLog mode ForceAtlas2:
$$F_a(u,v)=log(1+d(u,v))$$
为了对力导向图进行更好地聚类,减小了节点距离对引力的影响。 - Gravity:
为了防止零散的点漂走,给每个节点一个重力。
$$F_g(n)=k_g(deg(n)+1)$$ - Edge Weight:
给连接u和v的边e一个重量w(e),用于修改引力:
$$F_a(u,v)=w(e)^\delta d(u,v)$$
w(e)由连接次数决定,用户只能通过修改$\delta$来修改w的权重 - Dissuade Hubs mode:
让拥有更多connection的节点作为中心节点。
$$F_a(u,v)=\frac{d(u,v)}{deg(u)+1}$$ - Prevent Overlapping:
为了防止重叠,定义新的距离公式:
$$d’(u,v)=d(u,v)-size(u)-size(v)$$
当$d’(u,v)>0$时,用d’代替d
当$d’(u,v)<0$时,将引力变为0,增大斥力常数$k_r$
当$d’(u,v)=0$时,将斥力和引力都变为0
Optimization
Barnes Hut Algorithm
如果对每个点都计算其他所有节点的作用力,整个算法将变得非常复杂,计算复杂度会达到o(n2),Barnes Hut算法的主要思想就是
将距离节点n较远的一群节点看作一个节点作用于n上,方法是先将整张图用四分法分至每个叶节点里都只有一个点,再在对节点进行受力分析时判断某一正方形内的节点是否可以看作一个节点进行处理
受力分析判断方法:
从根节点开始进行遍历,如果某节点的$\frac{s}{d}$值小于某阈值,其中s代表该节点的范围,d代表目标节点到该节点质心的距离,则讲这一范围内所有节点对目标节点的作用力看作一个整体,进行受力分析。详细描述见Barnes-Hut Algorithm -arborjs.
Adapting Local Speed
问题:当节点聚拢时,如果保持当前速度,很有可能在平衡状态附近震荡,而我们希望能有一张精确的力导向图,所以针对不同的节点需要有不同的速度限制。
解决方法:每个节点n被添加了一个摆动参数 $swg_{(t)}$
$$
swg_{(t)}(n)=|F_{(t)}(n)-F_{(t-1)}(n)|
$$
swg代表单位时间内n受力之差,节点的前进方向为平衡位置时n的受力差基本不变,如果节点前进方向与平衡位置相反时,需要减缓速度,我们根据swg来改变local speed s(n)
$$
s(n)=\frac{k_ss(G)}{(1+s(G)\sqrt{swg(n)})}
$$
s(G)是global speed,在下面对section中会详细说明
Adapting Global Speed
global speed 即为当前力导向图整体的速度,由两个参数 swg(G) 和 tra(G) 决定,global speed 对local speed 加以限制:
$s(n)<\frac{k_{smax}}{|F(n)|}$, $k_{smax}=10$
$$
swg(G)=\sum_n(deg(n)+1)swg(n)
$$
tra与swg相反,指代节点的前进方向为平衡位置时的受力(convergence)
$$
tra_{(t)}(n)=\frac{|F_{(t)}(n)+F_{(t)}(n+1)|}{2}
$$
$$
tra(G)=\sum_n(deg(n)+1)tra(n)
$$
$$
s(G)=\tau\frac{tra(G)}{swg(G)}
$$
Performance
与两个不同的力导向模型进行比较,发现ForceAtlas2模型在小型网络上的表现不如Yifan Hu模型,但是它
大型网络结构上有着更好地表现,它到达平衡点的速度快,并且对信息有一个更清晰的展现,ForceAtlas with LinLog Mode 可以实现更好地聚类。
Realization
github: ForceAtlas2
Reference
[1] Jacomy M, Venturini T, Heymann S, et al. ForceAtlas2, a Continuous Graph Layout Algorithm for Handy Network Visualization Designed for the Gephi Software[J]. Plos One, 2014, 9(6):e98679.
[2] Noack A. Energy Models for Graph Clustering.[J]. Journal of Graph Algorithms & Applications, 2008, 11(2):453-480.
[3] Barnes J, Hut P (1986) A hierarchical O(NlogN) force-calculation algorithm. Nature 324:446???449