跳到内容

一种树状布局,非常适合树,对于循环不太多的图来说也可以接受。

用法

layout_as_tree(
  graph,
  root = numeric(),
  circular = FALSE,
  rootlevel = numeric(),
  mode = c("out", "in", "all"),
  flip.y = TRUE
)

as_tree(...)

参数

graph

输入图。

root

根顶点或根顶点的索引。 如果这是一个非空向量,则提供的顶点 ID 用作树的根(如果图是连通的,则用作单个树的根)。 如果它是一个空向量,则根顶点会自动计算,计算基于拓扑排序,执行的模式与 mode 参数相反。 在顶点排序之后,从每个组件中选择一个。

circular

逻辑标量,是否以圆形方式绘制树。 默认为 FALSE,因此树的分支是自下而上(或自上而下,请参见 flip.y 参数。)

rootlevel

当绘制不是树的森林(即它们是不连通的并且具有树组件)时,此参数可能很有用。 它指定森林中每棵树的根顶点的级别。 仅当 roots 参数不是空向量时才考虑它。

mode

指定构建树时要考虑的边。 如果它是“out”,则仅考虑父节点的输出边;如果是“in”,则仅考虑输入边。 如果它是“all”,则使用所有边(这是 igraph 0.5 和之前的版本中的行为)。 如果未给出根顶点,则此参数还会影响根顶点的计算。 请参阅 roots 参数。

flip.y

逻辑标量,是否翻转“y”坐标。 默认值为翻转,因为这会将根顶点放在顶部。

...

传递给 layout_as_tree()

一个具有两列的数值矩阵,每列对应一个顶点。

详细信息

在树中排列节点,其中给定的节点用作根。 树向下定向,父节点位于其子节点的上方居中。 有关确切的算法,请参见下面的参考文献。

如果给定的图不是树,则首先执行广度优先搜索以获得可能的生成树。

参考文献

Reingold, E and Tilford, J (1981). Tidier drawing of trees. IEEE Trans. on Softw. Eng., SE-7(2):223–228.

作者

Tamas Nepusz ntamas@gmail.com 和 Gabor Csardi csardi.gabor@gmail.com

示例


tree <- make_tree(20, 3)
plot(tree, layout = layout_as_tree)

plot(tree, layout = layout_as_tree(tree, flip.y = FALSE))

plot(tree, layout = layout_as_tree(tree, circular = TRUE))


tree2 <- make_tree(10, 3) + make_tree(10, 2)
plot(tree2, layout = layout_as_tree)

plot(tree2, layout = layout_as_tree(tree2,
  root = c(1, 11),
  rootlevel = c(2, 1)
))