2016-01-25 18 views
6

Desidero comprimere un grafico nelle rispettive comunità/cluster. Permettetemi di illustrare questo con il seguente esempio giocattolo:Grafico compresso da cluster in igraph

set.seed(123) 

#toy graph 
g <- barabasi.game(10) %>% 
    as.undirected() 

#identify communities 
c_g <- fastgreedy.community(g) 

ci sono tre comunità, come si vede nel grafico seguente.

enter image description here

voglio ridurre il collasso i vertici in modo che i vertici del grafo risultante corrispondono ai membri dei vertici precedenti. Vedi il grafico.

enter image description here

Sono nuovo al pacchetto igraph e io non sono a conoscenza il miglior modo di trattare con igraph oggetti.

risposta

8

Si potrebbe provare contract:

library(igraph) 
set.seed(123) 
g <- barabasi.game(10) %>% as.undirected() 
c_g <- fastgreedy.community(g) 
V(g)$name <- letters[1:vcount(g)] 

g2 <- contract(g, membership(c_g), vertex.attr.comb=toString) 

par(mfrow=c(1,2)) 
plot(g, vertex.color=membership(c_g)) 
plot(simplify(g2), vertex.color=1:vcount(g2)) 

enter image description here

Problemi correlati