我想将下图中顶点 1 和 2 之间的边表示为两个单独的边,箭头方向相反。
require(igraph)
e <- c(1,2, 2,3, 3,1, 3,4 , 4,1 , 2,1)
g <- graph(e, n=5, directed = TRUE)
tkplot(g, layout=layout.circle )
我得到的只是一个两端都有箭头的边缘。它应该很容易,但我没有在任何地方找到它,也无法弄清楚。任何想法?
最佳答案
您应该绘制带有弯曲边缘的图形。请注意,在 plot()
中,您使用 edge.curved
弯曲,但单独曲线边缘的边缘属性应该仅为 curved
。
下面的函数 curve.reciprocal.edges()
我在找到 Sacha Epskamp 的 this answer 之后编写的,他显然已经编写了一个包 qgraph
,如果您的需求超出了可以实现的范围,您可能会发现它很有用:
require(igraph)
e <- c(1,2, 2,3, 3,1, 3,4 , 4,1 , 2,1)
g <- graph(e, n=5, directed = TRUE)
curve.reciprocal.edges <- function(g, curve=.3){
# Return a graph where the edge-attribute $curved is reset to highlight reciprocal edges
el <- t(apply(get.edgelist(g),1,sort))
E(g)$curved <- 0
E(g)[duplicated(el) | duplicated(el,fromLast =TRUE)]$curved <- curve
(g)
}
plot(g, layout=layout.circle, edge.curved=.2)
plot(curve.reciprocal.edges(g), layout=layout.circle)
关于r - 多有向边 igraph,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35346750/