Conceptualmente seria así:
#--------------------------------------------------------------- # carga libreria y datos de dropbox library(igraph) datos <- read.csv("https://www.dropbox.com/s/blugxmyhty6lkeq/Twitter_network_R.csv?dl=1") #--------------------------------------------------------------- # crea objeto de grafo con solo 50 observaciones de ejemplo grafo <- graph.data.frame(datos[1:50,]) #--------------------------------------------------------------- # grafica objeto de grafo como ejemplo plot(grafo,layout=layout.fruchterman.reingold, vertex.size=8, vertex.label.dist=0.4, vertex.color="red", edge.arrow.size=0.5) #--------------------------------------------------------------- # calcula page rank pr.tmp <- data.frame(pr.value= page.rank(grafo)$vector) pr <- data.frame(pr.desc=row.names(pr.tmp), pr.val = pr.tmp[,1]) head(pr[order(pr$pr.val,decreasing = T),]) #imprime los 6 usuarios mas relevantes #--------------------------------------------------------------- # grafica interacciones usando valor page.rank para tamaños en grafico V(grafo)$label.cex = 0.6 + pr$pr.val*3 # tamaño de letra segun page.rank plot(grafo,layout=layout.fruchterman.reingold, vertex.size=pr$pr.val*100, vertex.label.dist=0.4, vertex.color="red", edge.arrow.size=0.3)
Si se quiere graficar la persona mas importante, usando valor de pagerank, y tener este grafico:
Puede agregarse al script anterior lo siguiente:
La ppt con imagen se descarga AQUI
Una ppt con conceptos básicos de grafos se puede descargar AQUIPuede agregarse al script anterior lo siguiente:
La ppt con imagen se descarga AQUI
Referencia:
http://is-r.tumblr.com/post/38240018815/making-prettier-network-graphs-with-sna-and-igraph
Buenas.
ResponderEliminarEn el código:
# calcula page rank
pr.tmp <- data.frame(pr.value= page.rank(grafo)$vector)
pr <- data.frame(pr.desc=row.names(pr.tmp), pr.val = pr.tmp[,1])
head(pr[order(pr$pr.val,decreasing = T),]) #imprime los 6 usuarios mas relevantes
¿Cómo hago para obtener todos los usuarios de la red, no sólo los 6 más relevantes?
Gracias