跳到内容

DrL 是一个力导向图布局工具箱,专注于真实世界的大规模图,由 Shawn Martin 及其在桑迪亚国家实验室的同事开发。

用法

layout_with_drl(
  graph,
  use.seed = FALSE,
  seed = matrix(runif(vcount(graph) * 2), ncol = 2),
  options = drl_defaults$default,
  weights = NULL,
  dim = c(2, 3)
)

with_drl(...)

参数

graph

输入图,可以是无向图或有向图。

use.seed

逻辑标量,是否使用 seed 参数中给出的坐标作为起点。

seed

一个两列的矩阵,如果 use.seedTRUE,则表示顶点的起始坐标。否则,它将被忽略。

options

布局生成器的选项,一个命名列表。请参见下面的详细信息。

weights

边的权重。它必须是一个正数值向量,NULLNA。如果它是 NULL 并且输入图具有 ‘weight’ 边属性,则将使用该属性。如果为 NULL 并且不存在此类属性,则边将具有相等的权重。如果该图具有 ‘weight’ 边属性,但您不希望将其用于布局,请将其设置为 NA。较大的边权重对应于更强的连接。

dim

‘2’ 或 ‘3’,它指定我们是需要二维还是三维布局。请注意,由于 DrL 算法的性质,三维布局需要更长的时间来计算。

...

传递给 layout_with_drl()

一个两列的数值矩阵。

详细信息

此函数实现了力导向 DrL 布局生成器。

生成器具有以下参数

edge.cut

边缘切割在算法的后期阶段进行,以实现密度较低的布局。如果边缘上存在很大压力(目标函数总和中的大值),则会切割边缘。边缘切割参数是 0 到 1 之间的值,其中 0 表示没有边缘切割,1 表示最大边缘切割。

init.iterations

第一阶段的迭代次数。

init.temperature

起始温度,第一阶段。

init.attraction

吸引力,第一阶段。

init.damping.mult

阻尼,第一阶段。

liquid.iterations

迭代次数,液态阶段。

liquid.temperature

起始温度,液态阶段。

liquid.attraction

吸引力,液态阶段。

liquid.damping.mult

阻尼,液态阶段。

expansion.iterations

迭代次数,扩展阶段。

expansion.temperature

起始温度,扩展阶段。

expansion.attraction

吸引力,扩展阶段。

expansion.damping.mult

阻尼,扩展阶段。

cooldown.iterations

迭代次数,冷却阶段。

cooldown.temperature

起始温度,冷却阶段。

cooldown.attraction

吸引力,冷却阶段。

cooldown.damping.mult

阻尼,冷却阶段。

crunch.iterations

迭代次数,挤压阶段。

crunch.temperature

起始温度,挤压阶段。

crunch.attraction

吸引力,挤压阶段。

crunch.damping.mult

阻尼,挤压阶段。

simmer.iterations

迭代次数,煨炖阶段。

simmer.temperature

起始温度,煨炖阶段。

simmer.attraction

吸引力,煨炖阶段。

simmer.damping.mult

阻尼,煨炖阶段。

还有五个预定义的参数设置,分别称为 drl_defaults$defaultdrl_defaults$coarsendrl_defaults$coarsestdrl_defaults$refinedrl_defaults$final

参考文献

请参见以下技术报告:Martin, S., Brown, W.M., Klavans, R., Boyack, K.W., DrL: Distributed Recursive (Graph) Layout. SAND Reports, 2008. 2936: p. 1-10。

参见

有关其他布局生成器,请参见 layout()

作者

Shawn Martin (http://www.cs.otago.ac.nz/homepages/smartin/) 和 Gabor Csardi csardi.gabor@gmail.com 开发了 R/igraph 接口和三维版本。

示例


g <- as_undirected(sample_pa(100, m = 1))
l <- layout_with_drl(g, options = list(simmer.attraction = 0))
plot(g, layout = l, vertex.size = 3, vertex.label = NA)