将双向网络的igraph布局从垂直方向旋转到水平方向

时间:2019-06-20 18:17:04

标签: r igraph

我创建了一个垂直取向的双向网络:

edgelist <- read.table(text="Person    Event
                         Amy       football
                         Bob       picnic
                         Sam       artshow", 
                       header=TRUE)
igraph <- graph.data.frame(edgelist)

V(igraph)$type <- V(igraph)$name %in% edgelist[,1]
plot(igraph, vertex.label=V(igraph)$Name, vertex.size=7,vertex.label.dist=2, layout=layout_as_bipartite) 

我想知道是否可以创建水平方向且每个节点旁边的节点名称相同的图。

1 个答案:

答案 0 :(得分:1)

要获得原始布局矩阵,可以在设置图形类型后使用以下代码:

LO <- layout_as_bipartite(igraph)

现在,它具有用于二部图的正确坐标,但是它将图形绘制为两行。要以所需方向绘制它,可以通过向后索引矩阵来翻转X和Y坐标。

plot(igraph, vertex.label=V(igraph)$Name, vertex.size=7,vertex.label.dist=2, layout=LO[,2:1])

修改

我忘记了要重新放置标签的位置。幸运的是,您已将 $ type 参数设置为边缘尾节点的指示符。您可以使用绘图功能的 vertex.label.degree 参数。将提到的逻辑向量属性与 pi 相乘也解决了该问题。因此,尾巴标签的位置旋转了 pi ,而在右侧,标签旋转了0。我还绘制了离节点更远的标签。

plot(igraph, vertex.label=V(igraph)$Name,
 vertex.size=7, vertex.label.dist=3, layout=LO[,2:1],
 vertex.label.degree = pi*V(igraph)$type)

Updated bipartite horizontal plot