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