如何在具有R中特定根节点的VisIGraph函数中放置layout_as_tree?

时间:2018-02-06 07:34:24

标签: r igraph visnetwork

我试图使用R中的visIgraph函数绘制一个igraph对象,这个函数有一个参数布局,它接受一个字符串输入。但是,我想要一个具有特定根节点的layout_as_tree,就像在igraph上绘图时一样。

1 个答案:

答案 0 :(得分:1)

你没有提供任何数据来绘图,所以我会把一棵简单的树作为插图。

library(igraph)
library(visNetwork)

## Basic tree
EL = matrix(c(1,2,1,3,2,4,2,5,3,6,3,7), byrow=TRUE, ncol=2)
Tree = graph_from_edgelist(EL)

有两种方法可以使用igraph布局使用visIgraph进行绘制。

1传递要使用的布局功能

visIgraph(igrap=Tree, layout="layout_as_tree", flip.y=FALSE, root=1)

额外的参数flip.y=FALSE, root=1被传递给函数layout_as_tree

2首先创建布局并将布局矩阵传递给visIgraph

此版本允许您查看布局并根据需要进行调整。

LO = layout_as_tree(Tree, root =1, flip.y=FALSE)
visIgraph(Tree, layout='layout.norm', layoutMatrix=LO)

两个版本都会创建此图表。

Tree Diagram

编辑 - 响应对100个节点的评论

当然,你只能在屏幕上显示这么多节点,但仍然可以看到发生了什么,但是在100个节点上,使用type="full"得到了相当不错的结果。

T100 = make_tree(100)
LO = layout_as_tree(T100, root =1, flip.y=FALSE)
visIgraph(T100, type="full", layout='layout.norm', layoutMatrix=LO)

100 Nodes