描述
本文简要介绍力导向算法的原理,提供了源码和D3绘制的实验结果图。
Force-Directed Layout algorithms are graph drawing algorithms based only on information contained within the structure of the graph itself rather than relying on contextual information.
力导向布局算法是一类绘图算法,它仅仅基于图的解构本身来绘图,而不依赖于上下文信息。
力导向绘图 (Force-directed graph drawing)可以用于描述关系图的结点之间的关系,把结点分布到画布上合理的位置,比如描述企业之间的关系,社交网络中的人际关系等。
原理
斥力(Repulsive Force)
把每个节点看做一个电荷,电荷与电荷之间存在斥力,也就是库仑力,根据库仑定律( Coulomb's law),电子之间的斥力可以这么计算:
Coulomb's law
假设每个电子的电量都是1,那就有:
F = k/r2.
常数k可以根据画布大小和电子数量计算。
由于需要更新x,y坐标,可以分别计算斥力产生的正向位移。
displacementX = distX / dist * k * k / dist * ejectFactor
*关于计算x, y偏移和常数k的方式,可能并没有特别明确的方式,这里可能并不是最优的方法。
引力(Traction Forc