在R的igraph中,R倒数边是什么意思?

4
我正在使用R处理图形。我目前正在使用igraph,希望能够绘制图形的双向边缘“互惠边缘”。到目前为止,我已经看到可以绘制“双向”图形,但不能表示互惠边缘,例如:E(1,3)和E(3,1)可能被表示为一个双向边缘<--->,但我希望绘制两个平行的边缘,一个指向另一个方向||。 在Rgraphviz中,绘制“plot(rEG, recipEdges =“distinct”)"时存在一个选项可以实现这一点,但我更喜欢igraph上的绘图效果。提前致谢。
2个回答

5
igraph中,您可以使用边属性curved来弯曲所需的边。
例如,这是一个基于小邻接矩阵的图形:
library("igraph")
adj <- matrix(c(
    0,1,1,
    1,0,1,
    0,0,0),3,3,byrow=TRUE)

library("igraph")
G <- graph.adjacency(adj)

节点0和1之间的边是双向的(实际上,它们不是双向的,它们只是两条边,因为它们是直的。)。

plot(G)

为了改变这个问题,我们可以使用边缘列表:
E <- t(apply(get.edgelist(G),1,sort))

E(G)$curved <- 0
E(G)[duplicated(E) | duplicated(E,fromLast =TRUE)]$curved <- 0.2

plot(G)

另一个选项是我的软件包,其中这是默认行为:

library("qgraph")
qgraph(adj)

可以使用bidirectional参数来抑制这种情况。

非常感谢,我看到您甚至可以设置平行边之间的分离,这太棒了。 - megyn

2
尝试使用plot(graph, edge.curved=TRUE)。它在igraph 0.6中肯定有效,并且在igraph 0.5.4中也可能有效(不确定是何时添加的)。

这太棒了,我喜欢@sachaepskamp的回答之处在于你可以修改边缘之间的间隔,感谢两位。 - megyn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接