miércoles, 22 de julio de 2015

Grafos dinámicos en javascript y R

Creación de gráficos de red usando javascript directamente de R
por Andrie de Vries - Revolutions

En mi post anterior sobre la estructura de la red de CRAN demostré cómo utilizar rango y comunidades página a visualizar la estructura de un grafo.

En UseR!2015 discutí mi trabajo con Gabor Csardi, el mantenedor del paquete igraph. Gabor me dio un montón de consejos útiles.

Una pepita era cómo utilizar el paquete networkD3 (disponible en CRAN) para visualizar un gráfico dinámicamente usando javascript.

Una vez que tenga un objeto igraph, es bastante trivial para utilizar networkD3 para trazar la gráfica:

  • Utilice igraph :: get.data.frame () para crear un marco de datos del objeto igraph
  • Utilice networkD3 :: simpleNetwork () para trazar la gráfica

Si utiliza RStudio como su IDE, a continuación, su trama se muestra directamente en el visor RStudio. Esto se debe a networkD3 utiliza marco htmlWidgets para mostrar javascript objetos en R, y RStudio apoya esta muy bien. Si utiliza un IDE diferente, a continuación, su trama se muestra en una ventana del navegador externo

Aquí está mi código. Puedo importar un gráfico pre-guardado directamente desde github, donde guardé mis scripts y objetos intermediado para la estructura de la red de presentación CRAN. Para simplificar, primero se crea un subconjunto de paquetes influyentes, sólo aquellos con más de 50 enlaces:


1234567891011121314151617
library("networkD3")
library("igraph")
 
# Download prepared igraph file from github
url <- "https://github.com/andrie/cran-network-structure/blob/master/pdb/depGraph-CRAN.rds?raw=true"
datafile <- tempfile(fileext = ".rds")
download.file(url, destfile = datafile, mode = "wb")
gs <- readRDS(datafile)
 
# Remove all nodes with fewer than 50 edges
deg <- degree(gs, mode = "out")
idx <- names(which(deg > 50))
gn <- induced.subgraph(gs, idx)
 
# Extract into data frame and plot
gd <- get.data.frame(gn, what = "edges")
simpleNetwork(gd, fontSize = 12)
view rawnetworkD3.R hosted with ❤ by GitHub
Y este es el resultado. Note que el dibujo es dinámico - se puede arrastrar cualquier nodo para rearticular la red:
clusterHmiscdigestggplot2httrshinyforeachglmnetFormulajsonlitelatticeapecodalme4maptoolsMatrixnlmespzooMASScarigraphmgcvnnetplyrreshapereshape2scalesRColorBrewerRcppdplyrRcppArmadilloRCurldata.tablerasterrgdalstringrsurvivalxtable

No hay comentarios:

Publicar un comentario en la entrada