我正在使用R处理图形。我目前正在使用igraph,希望能够绘制图形的双向边缘“互惠边缘”。到目前为止,我已经看到可以绘制“双向”图形,但不能表示互惠边缘,例如:E(1,3)和E(3,1)可能被表示为一个双向边缘<--->,但我希望绘制两个平行的边缘,一个指向另一个方向||。
在Rgraphviz中,绘制“plot(rEG, recipEdges =“distinct”)"时存在一个选项可以实现这一点,但我更喜欢igraph上的绘图效果。提前致谢。
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
参数来抑制这种情况。plot(graph, edge.curved=TRUE)
。它在igraph 0.6中肯定有效,并且在igraph 0.5.4中也可能有效(不确定是何时添加的)。