2012-09-21 97 views
2

使用iGraph,我怎樣才能用圓形曲線表示自反射節點?默認情況下,這些曲線由一個壓縮或淚滴形狀的循環表示。R包中的環路iGraph

回答

2

Inside plot.igraph你可以看到使用plot.bezier函數繪製了循環,並且在那裏所有的控件都非常硬編碼。您必須重寫大塊plot.igraph以調用您必須編寫的plot.circle函數來執行此操作。

此外,我猜你不想要完整的圓形,而是從頂點符號邊緣開始的圓段(默認的帶有頂點號的藍色圓圈)和結束(可能帶有箭頭)在頂點符號邊緣的另一部分?或者你想要像bezier淚滴循環那樣的符號圈子嗎?

無論哪種方式,答案似乎是「不,不是沒有做一些編程或提交的功能要求的igraph傢伙」

我貼出了剛纔的答覆稱排版功能都參與,但事實並非如此 - 佈局函數只能定位頂點,而plot.igraph的工作是繪製邊。

+0

提交功能請求的地方在這裏:https://bugs.launchpad.net/igraph/+bugs –

8

由於Spacedman說,你需要做一些編程來做到這一點。你可以繪製一個沒有自循環的圖形,然後添加它們(圖形基本上是一個散點圖,你可以使用points和類似的函數向它們添加直線),但這不是微不足道的(特別是因爲你需要知道節點的邊緣,而不是它們的中心),並且會導致自循環被繪製在可能看起來不太好的其他任何東西之上。

這個週末我已經更新了qgraph以及如何自我循環的工作。 qgraph可用於繪製網絡,並應與igraph搭配使用。例如: -

# An adjacency matrix: 
A <- matrix(1,3,3) 

library("igraph") 
# igraph graph and layout: 
Graph <- graph.adjacency(A) 
Layout <- layout.circle(Graph) 

# Plot in qgraph: 
library("qgraph") 
qgraph(get.adjacency(Graph,sparse=FALSE),layout=Layout,diag=TRUE,directed=TRUE) 

enter image description here

我與這些自成迴路,如何變成了相當的內容,他們似乎更對你的描述。所以這可能是一個選擇。但是,我的循環與硬編碼一樣。作爲參考,我使用內部函數qgraph:::Cent2Edge計算節點的邊緣(循環的起點和終點),並使用內部函數qgraph:::SelfLoop計算循環(樣條曲線)的形狀。

+0

告訴qgraph繪製直線或樣條曲線的參數是什麼? – skan