4

我正在使用 R 中的图形。我目前正在使用 igraph,我希望能够绘制图形的双向边“互易边”。到目前为止,我已经看到可以绘制“双向”图​​,但不能绘制倒数边,例如:E(1,3) 和 E(3,1) 可能表示为双向边<-->,但是相反,我想绘制两条平行边,一条指向另一条的相反方向|| . 在绘制“plot(rEG, recipEdges = "distinct")" 时,Rgraphviz 中存在一个选项,但我更喜欢 igraph 上的绘图。提前致谢。

4

2 回答 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)

要改变这一点,我们可以使用 edgelist:

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参数来抑制。

于 2011-04-19T16:46:37.843 回答
2

试试plot(graph, edge.curved=TRUE)。它肯定适用于 igraph 0.6,也可能适用于 igraph 0.5.4(不确定何时添加)。

于 2011-04-19T06:41:27.423 回答