2012-10-02 10 views
8

私はこの質問に対する回答を探していますが、言及が見つかりませんでしたので、ここに投稿することにしました。私は、igraphやパッケージが "コミュニティグラフ"を作成する簡単な方法を提供しているかどうかを確認しようとしています。各ノードはネットワーク内のコミュニティを表し、その関係はコミュニティ間のつながりを表します。私はigraphでうまく動作するコミュニティ検出アルゴリズムを得ることができますが、結果を崩壊させて各コミュニティ間の接続を表示する方法を見つけることはできませんでした。いかなる援助も感謝します。igraphでコミュニティグラフを生成

+1

はい、これはigraphで行うことができますが、実際には何も再現性がありません。私はigraph [(LINK1)](http://trinkerrstuff.wordpress.com/2012/06/29/igraph-and-structured-text-exploration/)と[(LINK 2)](http ://trinkerrstuff.wordpress.com/2012/06/30/igraph-and-sna-an-amateurs-dabbling/)賛成ですがそれは合っています:) igraphのウェブサイトは多くの例でも非常に良いです。ここでも例のデータセットを使用してさらに助けてもらうことができます。 –

+0

+1のデータ例。 – TARehman

答えて

19

単にcontract.vertices()機能を使用できます。これは、頂点のグループを単一の頂点に縮小します。基本的に同じ方法です。例えば。

library(igraph) 

## create example graph 
g1 <- graph.full(5) 
V(g1)$name <- 1:5  
g2 <- graph.full(5) 
V(g2)$name <- 6:10 
g3 <- graph.ring(5) 
V(g3)$name <- 11:15 
g <- g1 %du% g2 %du% g3 + edge('1', '6') + edge('1', '11') 

## Community structure 
fc <- fastgreedy.community(g) 

## Create community graph, edge weights are the number of edges 
cg <- contract.vertices(g, membership(fc)) 
E(cg)$weight <- 1 
cg2 <- simplify(cg, remove.loops=FALSE) 

## Plot the community graph 
plot(cg2, edge.label=E(cg2)$weight, margin=.5, layout=layout.circle) 
+2

このコードのようには見えません... –

+2

確かに修正しました。 –

関連する問題