Un graphe dynamique et interactif avec d3.js
R est un logiciel formidable. Mais d’autres outils sont plus adaptés pour une présentation sur internet. Il existe un ensemble d’instructions appelées d3.js, qui permettent en quelques instructions de mettre en ligne des graphiques interactifs. Pour deux exemples, voir ce réseau de sociologues et ce réseau d’écrivains.
Voici comment faire la même chose, chez vous.
Ce “tutoriel” nécessite quelques connaissances de R et de html.
Le point de départ :
– vous avez créé un graphe, dans R, avec le package igraph. Ce graphe se nomme g2. Il est constitué de “vertices” (des individus par exemple) et de “edges” (des liens entre individus). À chaque individu, vous avez associé un “groupe” : V(g2)$group (il peut y avoir plein de groupes, numérotez-les)
– il s’agit maintenant d’exporter ce graphe (ou une partie), dans un format que d3.js peut comprendre… et d3.js comprend surtout le .json
– le code suivant va enregistrer un fichier .json utilisable par d3.js, en se servant du package RJSONIO
library(RJSONIO) #creation de la partie qui renseigne les "nodes" temp<-cbind(V(g2)$name,V(g2)$group) colnames(temp)<-c("name","group") js1<-toJSON(temp) #creation de la partie qui renseigne les "liens" write.graph(g2,"Desktop/edgelist.csv",format="edgelist") edges<-read.csv("Desktop/edgelist.csv",sep=" ",header=F) colnames(edges)<-c("source","target") edges<-as.matrix(edges) js2<-toJSON(edges) #concatenation des deux parties reseau<-paste('{"nodes":',js1,',"links":',js2,'}',sep="") write(reseau,file="Desktop/reseau.json")
Created by Pretty R at inside-R.org
Ce fichier .json a normalement la structure suivante :
{ "nodes":[ {"name":"Nom1","group":4}, ... {"name":"Nom3","group":3}], "links":[ {"source":0,"target":1}, ... {"source":138,"target":126}] }
Ensuite : téléchargez ce fichier reseau.txt, enregistrez le dans le même répertoire que celui dans lequel est enregistré reseau.json. Changez l’extension (remplacez .txt par .html).