Cercando di trovare comunità nei dati dei tweet. La somiglianza del coseno tra parole diverse forma la matrice di adiacenza. Quindi, ho creato il grafico da quella matrice di adiacenza. La visualizzazione del grafico è il compito qui:Come distribuire il grafico della comunità realizzato utilizzando il pacchetto igraph in R
# Document Term Matrix
dtm = DocumentTermMatrix(tweets)
### adjust threshold here
dtms = removeSparseTerms(dtm, 0.998)
dim(dtms)
# cosine similarity matrix
t = as.matrix(dtms)
# comparing two word feature vectors
#cosine(t[,"yesterday"], t[,"yet"])
numWords = dim(t)[2]
# cosine measure between all column vectors of a matrix.
adjMat = cosine(t)
r = 3
for(i in 1:numWords)
{
highElement = sort(adjMat[i,], partial=numWords-r)[numWords-r]
adjMat[i,][adjMat[i,] < highElement] = 0
}
# build graph from the adjacency matrix
g = graph.adjacency(adjMat, weighted=TRUE, mode="undirected", diag=FALSE)
V(g)$name
# remove loop and multiple edges
g = simplify(g)
wt = walktrap.community(g, steps=5) # default steps=2
table(membership(wt))
# set vertex color & size
nodecolor = rainbow(length(table(membership(wt))))[as.vector(membership(wt))]
nodesize = as.matrix(round((log2(10*membership(wt)))))
nodelayout = layout.fruchterman.reingold(g,niter=1000,area=vcount(g)^1.1,repulserad=vcount(g)^10.0, weights=NULL)
par(mai=c(0,0,1,0))
plot(g,
layout=nodelayout,
vertex.size = nodesize,
vertex.label=NA,
vertex.color = nodecolor,
edge.arrow.size=0.2,
edge.color="grey",
edge.width=1)
Voglio solo avere un po 'più di spazio tra cluster separati/comunità.
si prega di inserire il g o un esempio di esso –
Hai provato a cambiare l'area del complotto? Il valore predefinito è 'area = vcount (grafico)^2' (http://www.inside-r.org/packages/cran/igraph/docs/layout) –
Appena aggiornato con l'ultima versione del codice e grafico. – magarwal