2011-04-04 66 views
5

我從來沒有在R中使用任何圖形繪圖包,我熟悉基本繪圖命令和ggplot2包。我發現的(但還沒有試用過)是Rgraphviznetworkigraph包。所以,我想問問你,這包有簡單的學習曲線,滿足下列要求:在R中繪製定向多圖形

  • 擁有簡單的佈局引擎(春季布局,隨機,...)
  • 試圖得出兩者之間的多條邊頂點,以便它們不會重疊。作爲獎勵,它能很好地調整這一點。
  • 可以畫循環。
  • 頂點和邊緣標籤,頂點和邊的大小和顏色都可以調整。
  • (無需任何像鏈接分析,最短路徑,最大流量等,但不錯的圖形算法,如果存在的話)

回答

3

igraph包似乎滿足您的要求,與tkplot()功能幫助調整如果需要最終的佈局。

下面是使用的例子:

s <- cbind(A=sample(letters[1:4], 100, replace=TRUE), 
      B=sample(letters[1:2], 100, replace=TRUE)) 
s.tab <- table(s[,1], s[,2]) 
library(igraph) 
s.g <- graph.incidence(s.tab, weighted=T) 
plot(s.g, layout=layout.circle, 
    vertex.label=c(letters[1:4],letters[2:1]),  
    vertex.color=c(rep("red",4),rep("blue",2)), 
    edge.width=c(s.tab)/3, vertex.size=20, 
    vertex.label.cex=3, vertex.label.color="white") 

enter image description here

使用交互式顯示屏(有使用rgl 3D顯示的可能性),它看起來像(我稍微移動一個頂點之後):

tkplot(s.g, layout=layout.circle, vertex.color=c(rep("red",4),rep("blue",2))) 

enter image description here

最後,您甚至可以將圖表導出爲最常見的格式,例如graphviz的dot

+0

感謝。當我需要再次繪製圖表時,我會嘗試igraph!僅僅爲了一些信息,在我問了這個問題後,我和RGraphviz一起去了,並且通過重新編寫我的原始任務,擺脫了繪製多邊的需求。 – Timo 2011-05-02 13:06:12

+0

@Timo很高興聽到您用graphviz找到自己的方式。我也使用它很多。這只是'igraph'是最強大的,IMO。 (順便說一句,我的+1給你的Q,當我回答時,我沒有投票)---) – chl 2011-05-02 13:24:49

2

multigraph R軟件包也很有用。對於上述示例bmgraph重複這樣圖表:

library("multigraph") 
bmgraph(s.tab, layout = "circ", pch = 16:16, pos = 0, vcol = 6:7, lwd = 3, cex = 9) 

enter image description here



而對於定向版本:

bmgraph(s.tab, "circ", pch = 16:16, pos = 0, vcol = 6:7, lwd = 3, cex = 9, directed = TRUE) 

enter image description here