私はこの質問に対する答えを探していましたが、言及が見つからなかったので、ここに投稿することにしました。igraphまたはパッケージが、各ノードがネットワーク内のコミュニティを表し、タイがコミュニティ間のタイを表す「コミュニティグラフ」を作成する簡単な方法を提供するかどうかを確認しようとしています。コミュニティ検出アルゴリズムをigraphで正常に機能させることはできますが、結果を折りたたんで各コミュニティ間の接続を表示する方法を見つけることができませんでした。どんな援助もいただければ幸いです。
質問する
5974 次
1 に答える
21
contract.vertices()関数を使用するだけです。これにより、頂点のグループが 1 つの頂点に縮小されます。これは、本質的には同じ方法です。例えば
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)
于 2012-10-02T23:36:02.613 に答える