跳到内容

一种力导向布局算法,可以相对良好地扩展到大型图。

用法

layout_with_graphopt(
  graph,
  start = NULL,
  niter = 500,
  charge = 0.001,
  mass = 30,
  spring.length = 0,
  spring.constant = 1,
  max.sa.movement = 5
)

with_graphopt(...)

参数

graph

输入图。

start

如果给定,则应该是一个矩阵,包含两列,每个顶点一行。该矩阵将用作算法的起始位置。如果未给定,则使用随机起始矩阵。

niter

整数标量,要执行的迭代次数。通常应为几百次。如果有一个大图,那么您可能只想进行少量迭代,然后检查结果。如果结果不够好,您可以将其再次输入到 start 参数中。默认值为 500。

charge

顶点的电荷,用于计算静电排斥力。默认值为 0.001。

mass

顶点的质量,用于计算弹簧力。默认值为 30。

spring.length

弹簧的长度,一个整数。默认值为零。

spring.constant

弹簧常数,默认值为 1。

max.sa.movement

实数常量,它给出了沿单个轴单步允许的最大移动量。默认值为 5。

...

传递给 layout_with_graphopt()

一个数值矩阵,包含两列,每个顶点一行。

详细信息

layout_with_graphopt() 是 Michael Schmuhl 的 graphopt 布局算法的移植。graphopt 版本 0.4.1 用 C 语言重写,并且删除了对层的支持(可能会稍后添加),并且代码被稍微重组,以避免一些不必要的步骤,即节点电荷(见下文)为零。

graphopt 使用物理类比来定义顶点之间的吸引力和排斥力,然后模拟物理系统直到达到平衡。(没有模拟退火或类似的任何东西,因此不能保证稳定的固定点。)

作者

Michael Schmuhl 为原始 graphopt 代码,由 Gabor Csardi csardi.gabor@gmail.com 重写和包装。