TP6 DataViz: Force-directed graphs avec D3.js

Université Lyon 1, Master 2, 2016

Objectif du TP

Nous nous inspirerons de la visualisation du bipartisme du Sénat américain de David Chouinard

pour visualiser le bipartisme de l'assemblée nationale française en 2015. Chaque noeud représente un homme politique. La force entre les liens correspond au nombre de fois où ils ont été d'accord sur un vote (soit tous les deux pour, soit tous les deux contres).


0. Fork de l'exemple des Miserables

Forkez l'exemple de visualisation D3 (attention, D3 v4) des relations entre les personnages des Misérables. Cet exemple inclut 2 fichiers supplémentaires: scrutins.json et acteurs_simple2.json.
Le premier fichier contient tous les votes de l'assemblée depuis 2012. Cela inclut pour chaque vote et pour chaque parti, l'ensemble des personnes ayant voté pour, ou ayant voté contre (ou s'étant éventuellement abstenus -- nous les ignorerons ici). L'ensemble des acteurs politiques et le nom de leur parti est codé par une référence.
Le second fichier contient ainsi l'ensemble des références concernant les acteurs politiques (donnant ainsi leur nom, prénom, et autres données personnelles), ainsi que les partis politiques.

1. Adaptez la fonction de création de graphe

Aidez-vous d'un dictionnaire pour compter les votes pour et contre de chaque paire de acteurs en 2015 uniquement(attention, comptez ces paires même si les acteurs sont dans des partis différents!). Pour l'instant, nous considererons uniquement les identifiants des acteurs et des partis.

Attention: le graphe obtenu aura un nombre trop élevé de arcs, et votre machine ne tiendra probablement pas la route. Décimez alors votre graphe en ne considérant que les arcs correspondants à plus de N votes conjoints (la visualisation ci-dessus a été obtenue avec N=10, mais il faut attendre près de 2 minutes pour l'obtenir! débugguez avec N=20 au moins).

2. Affichage du nom des acteurs et partis

Changez la fonction "title" pour afficher le nom et le parti des acteurs lorsque la souris survole un noeud. Pour cela, utilisez le deuxième fichier pour retrouver les infos correspondant aux identifiants.

Le nom du parti json2.export.organes.organe[i].uid se trouve dans: json2.export.organes.organe[i].libelle

Similairement, le nom de l'acteur json2.export.acteurs.acteur[i].uid["#text"] se trouve à json2.export.acteurs.acteur[i].etatCivil.ident.prenom.

7. Pour les courageux (facultatif)

Rajouter une légende

Rendu pour ce TP

Vous pouvez discuter entre vous, mais le travail se fait et se rend individuellement. Soumettre au plus tard mercredi 14/12 21/12 à 23h59 le block dû par email à nicolas.bonneel@liris.cnrs.fr..