简介
plugin.layout.forceAtlas2 实现了图布局算法 Force Atlas 2 [链接]。它是一种力导布局算法,致力于给出一个图的可读布局形状。该算法可以结合多种技术,例如 Barnes Hut 模拟(用于加速)、依赖度数的斥力等。相比于传统的力导算法,该算法在计算力时更关注于节点的度数,这样能够使得图布局的可读性更高、更美观。
原文信息:
ForceAtlas2, A Continuous Graph Layout Algorithm for Handy Network Visualization
作者信息:
Mathieu Jacomy
Sebastien Heymann
Tommaso Venturini
Mathieu Bastian
MM. Jacomy and Venturini are with Sciences Po, medialab.
M. Heymann is with LIP6 - CNRS - Universite Pierre et Marie Curie.
M. Bastian is with the Gephi Consortium.
安装
在 HTML 中引用文件:
<script src="https://unpkg.com/@antv/g6/build/plugin.layout.forceAtlas2.js"></script>
或在 npm 中引用:
import '@antv/g6/build/plugin.layout.forceAtlas2';
参数
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
kr | 斥力参数。kr 越大,布局将更加松弛。 | number | 10 |
kg | 重力参数。kg 越大,布局被更吸引向中心,特别是有多个子图时,越大的 kg 值,会使得子图之间更加紧凑。 | number | 1.0 |
mode | 算法模式。’normal’:一般模式。 ‘linlog’:linlog 模式,图上的聚类将会更加紧凑。 | string | ‘normal’ |
prevOverlapping | 是否开启防止节点重叠。 | boolean | false |
dissuadeHubs | 是否开启 Dissuade Hubs 模式。true: 相对于出度更高的点( hubs ),具有更高入度的点( authorities )将会被置于更中心的位置。 | boolean | false |
barnesHut | 在计算斥力时,是否开启 Barnes Hut 优化 [链接]。true:开启,计算复杂度将从 O(N2) 下降到 O(N log N)。需要注意的是,在小规模的图上开启此优化可能会起到反作用,因为该优化使用四叉树需要在每次迭代中重构。建议在图中点数在300以上时使用。 | boolean | false |
ks | 控制全局速度。 | number | 0.1 |
ksmax | 最大全局速度。 | number | 10 |
tao | 全局抖动的容差。 | number | 0.1 |
maxIteration | 最大迭代次数。建议:点数在区间 [0, 50] 时设置为700, [51, 100] 时设置为1000,更多点数需要增大该数值。 | number | 1500 |
useWorker | 是否使用 webworker 运行计算。 | boolean | true |
使用
实例化插件对象:
const Layout = G6.Plugins['layout.forceAtlas2'];
const layoutParams = {
maxIteration: 1500,
prevOverlapping: true,
kr: 15,
mode: 'normal',
barnesHut: false,
ks: 0.1,
dissuadeHubs: false
};
const layout = new Layout(layoutParams)
在实例化 Graph
时作为插件插入:
const graph = new G6.Graph({
container: 'mountNode',
plugins: [ layout ]
});