简介

plugin.layout.forceAtlas2 实现了图布局算法 Force Atlas 2 [链接]。它是一种力导布局算法,致力于给出一个图的可读布局形状。该算法可以结合多种技术,例如 Barnes Hut 模拟(用于加速)、依赖度数的斥力等。相比于传统的力导算法,该算法在计算力时更关注于节点的度数,这样能够使得图布局的可读性更高、更美观。

FA2 力导图布局算法  plugin.layout.forceAtlas2 - 图2原文信息:

ForceAtlas2, A Continuous Graph Layout Algorithm for Handy Network Visualization

作者信息:

  1. Mathieu Jacomy
  2. Sebastien Heymann
  3. Tommaso Venturini
  4. Mathieu Bastian
  5. MM. Jacomy and Venturini are with Sciences Po, medialab.
  6. M. Heymann is with LIP6 - CNRS - Universite Pierre et Marie Curie.
  7. M. Bastian is with the Gephi Consortium.

安装

在 HTML 中引用文件:

  1. <script src="https://unpkg.com/@antv/g6/build/plugin.layout.forceAtlas2.js"></script>

或在 npm 中引用:

  1. 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

使用

实例化插件对象:

  1. const Layout = G6.Plugins['layout.forceAtlas2'];
  2. const layoutParams = {
  3. maxIteration: 1500,
  4. prevOverlapping: true,
  5. kr: 15,
  6. mode: 'normal',
  7. barnesHut: false,
  8. ks: 0.1,
  9. dissuadeHubs: false
  10. };
  11. const layout = new Layout(layoutParams)

在实例化 Graph 时作为插件插入:

  1. const graph = new G6.Graph({
  2. container: 'mountNode',
  3. plugins: [ layout ]
  4. });