2011-04-19 122 views
4

我在R中使用圖。我目前使用的是igraph,我希望能夠繪製圖的雙向邊「倒數邊」。到目前爲止,我已經看到可以繪製「雙向」圖​​形而不是倒數邊線,例如:E(1,3)和E(3,1)可能可以表示爲雙向邊緣< - >,但相反,我想繪製兩條平行邊,一條指向另一條||的相反方向。 在繪製「繪圖(rEG,recipEdges =」distinct「)」時,Rgraphviz中存在一個選項,但我更喜歡igraph上的繪圖。提前致謝。R在igraph中的倒數邊在R

回答

4

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之間的邊緣被bidirected(實際上,它是沒有,它是兩個邊緣,他們只是看起來像一個bidirected優勢,因爲它們是直的):

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說法被抑制。

+0

非常感謝,我看到你甚至可以設置平行邊緣之間的分隔,這很棒。 – megyn 2011-04-20 03:08:10

2

嘗試plot(graph, edge.curved=TRUE)。它絕對在igraph 0.6中工作,它也可能在igraph 0.5.4中工作(不知道它何時被添加)。

+0

這很棒,我喜歡@sachaepskamp的答案是,你可以修改兩邊之間的分離,這要歸功於兩者。 – megyn 2011-04-20 03:10:43