tutorial - r network plot




我應該使用哪種佈局來獲得igraph中不重疊的邊? (2)

layout.reingold.tilford有一個名為circular的參數。 將此設置為TRUE會將最終佈局轉換為徑向佈局,方法是將X坐標視為角度(在適當重新縮放之後)並將Y坐標視為半徑。 具有諷刺意味的是,這並不能保證最終不存在邊緣交叉,但如果你的子樹與圖表的其餘部分相比不是很寬,那麼它可以很好地工作:

> g <- barabasi.game(100, directed=F)
> layout <- layout.reingold.tilford(g, circular=T)
> plot(g, layout=layout)

我正在嘗試使用樹狀數據構建圖形,其中節點通常分成> 2個邊緣。 我嘗試了各種佈局,並且我看到layout.reingold.tilford參數將生成具有非分叉數據的樹狀圖。 然而,產出並不是特別有吸引力。 我寧願使用類似layout.lgl或layout.kamada.kawai的東西,因為它們會產生更多的徑向結構。 我無法看到如何更改R中的參數,使這些樹沒有重疊的邊緣。 這可能嗎?

我以Pajek格式導入了一個簡單的數據文件,包含355個節點和354個邊緣。 我正在使用以下方式打印它:

plot.igraph(g,vertex.size=3,vertex.label=NA,layout=layout.lgl)

這給了我這樣的輸出,這很好,但仍然有重疊的邊緣。 我已經讀過你可以使用tkplot或者像cytoscape這樣的其他程序手動修復它,但是我有很多這樣的構建,並且它們的大小使得手動修正變得麻煩。

非常感謝。


只是想添加評論,但我的代表太低了。 @bdemarest發布的方法不適用於igraph版本> 0.7。 較新的版本不支持area參數,因此我無法獲得相同的效果。 讓舊版本構建需要一段時間,所以我會分享一些見解。 如果從igraph每晚構建下載它,您可以從源手動安裝igraph 0.7。 在我的機器上(Mac OS 10.10),由於gfortran ,我在構建它時遇到了一些問題,所以我發現這個鏈接解決了這個問題。 希望能幫助任何想要在R中創建類似圖形的人。