一种力导向布局算法,可以相对良好地扩展到大型图。
用法
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 使用物理类比来定义顶点之间的吸引力和排斥力,然后模拟物理系统直到达到平衡。(没有模拟退火或类似的任何东西,因此不能保证稳定的固定点。)
参见
其他图布局:add_layout_()
, component_wise()
, layout_()
, layout_as_bipartite()
, layout_as_star()
, layout_as_tree()
, layout_in_circle()
, layout_nicely()
, layout_on_grid()
, layout_on_sphere()
, layout_randomly()
, layout_with_dh()
, layout_with_fr()
, layout_with_gem()
, layout_with_kk()
, layout_with_lgl()
, layout_with_mds()
, layout_with_sugiyama()
, merge_coords()
, norm_coords()
, normalize()
作者
Michael Schmuhl 为原始 graphopt 代码,由 Gabor Csardi csardi.gabor@gmail.com 重写和包装。