我想将下图中顶点 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找到这个答案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)