我创建了一个垂直取向的双向网络:
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)
我想知道是否可以创建水平方向且每个节点旁边的节点名称相同的图。
答案 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)