igraph

2012-10-02 16 views
8

bir topluluk grafik oluşturma Bir bu soru için bir cevap aramak için aradım ama herhangi bir söz bulamadı, bu yüzden burada göndermeye karar verdim. Igrafın veya herhangi bir paketin, her düğümün ağdaki bir topluluğu temsil ettiği ve bağların topluluklar arasındaki bağları temsil ettiği bir "topluluk grafiği" oluşturmanın basit bir yolunu sağlayıp sağlamadığını görmeye çalışıyorum. Topluluk algılama algoritmasını, igraph'ta iyi çalışmasını sağlayabilirim, ancak sonuçları yalnızca her topluluk arasındaki bağlantıları gösterecek şekilde daraltmanın bir yolunu bulamadım. Herhangi bir yardım takdir edilecektir.igraph

+1

Evet, bu igraph ile yapılabilir, ancak gerçekten hiçbir şeyi tekrar üretemezsiniz. İşte ben [(LINK1)] (http://trinkerrstuff.wordpress.com/2012/06/29/igraph-ve-structured-text-exploration/) ve [(LINK 2)] (http : //trinkerrstuff.wordpress.com/2012/06/30/igraph-and-sna-an-amateurs-dabbling/) Kendi kendini tanıtma ama buna uyuyor :) Igraph'ın web sitesi de birçok örnekle çok iyi. Yine örnek bir veri seti ile daha fazla yardımcı olabiliriz. Örnek verilere –

+0

+1. – TARehman

cevap

19

contract.vertices() işlevini kullanabilirsiniz. Bu, köşe gruplarını temelde istediğin gibi tek bir köşeye sıkıştırır. Örneğin.

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

Bu kod gibi görünmüyor artık çalışmıyor ... –

+2

Gerçekten de tamir ettim. –

İlgili konular