создание графа сообщества в igraph

Я искал ответ на этот вопрос, но не мог найти никакого упоминания, поэтому я решил опубликовать здесь. Я пытаюсь увидеть, предоставляют ли igraph или какие-либо пакеты простой способ создания "графика сообщества", где каждый узел представляет сообщество в сети, а связи представляют связи между сообществами. Я могу заставить алгоритм обнаружения сообщества работать нормально в igraph, но я не мог найти способ свернуть результаты, чтобы просто показать связи между каждым сообществом. Любой была бы признательна за помощь.

1 ответов


вы можете просто использовать контракт.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)