Université Lyon 1, Master 2, 2016
Réaliser une carte interactive de la grippe en France comme celle ci-dessous.
TP noté, voir les instructions de soumission en bas de page.
Forker votre TP de la semaine dernière (TP4), pour démarrer proprement.
Commencer par rajouter un slider qui permettra de naviguer entre les différentes semaines du jeu de données.
<div>
<input id="slider" type="range" value="1" min="1" max="100" step="1" />
<span id="week">week</span>
</div>
On ajoutera aussi un élement textuel pour s'assurer que les évènements du slider sont bien capturé par le code javascript plus tard.
Utiliser de queue() pour charger les fichiers de données de manière asynchrone.
queue() // permet de charger les fichiers de manière asynchrone
.defer(d3.json, "regionsFrance.json")
.defer(d3.csv, "grippefrance.csv")
.await(processData); // une fois les fichiers chargé, la fonction processData
// est appelée avec les fichiers en arguments
function processData(error,francejson,grippedata) {}
Dans processData
:
Parcourir les données pour identifier le min et le max des valeurs de grippe, et ajuster l'échelle de couleur.
Ajuster la taille du slider en fonction du nombre de semaines disponibles dans les données (calculer la valeur de numberofweeks):
d3.select('#slider').attr("max", numberofweeks)
Injecter les données du fichier csv, dans le fichier json, comme dans le TP4. Mais cette fois ci, à la place d'injecter une valeur données, injecter un tableau de toutes les valeurs. Le code ci-dessous, récupère les valeurs d'une région données sous forme de tableau qu'il suffira d'insérer dans le json.
Object.values(data[i]);
Ajouter un listener sur le slider, qui appellera une fonction updateViz
en cas de changement, pour mettre à jour la visualisation:
d3.select("#slider").on("input", function() {
updateViz(+this.value);
});
Faire en sorte qu'en cas de changement du slider, le texte affiche la semaine sélectionnée.
d3.select('#week').html( valeur de la semaine selectionnée );
Il est possible de récupérer la liste des semaines sous forme de tableau JavaScript, avec la méthode suivante:
var weeksArray = Object.keys(data[0]);
Améliorer / reformater l'affichage de la semaine pour qu'il soit plus lisible.
Appeler la fonction de dessin de la carte drawMap()
(voir l'étape suivante).
Revoir les principes de update et enter en D3 vu dans le 1e TP.
Dessiner la carte comme dans le TP4, avec carte.enter()
.
Gérer la mise à jour de la carte, en partant du code ci-dessous. NB: la mise à jour ne demande pas de tout redessiner.
function drawMap(json, currentWeek) {
carte = svg.selectAll("path")
.data(json.features);
// code en cas de mise a jour de la carte / de changement de semaine
carte
.attr("class", "update")
...
// code pour la creation de la carte quand les donnees sont chargees la 1e fois.
carte.enter()
.append("path")
.attr("class", "enter")
...
}
Passer des données de 2014 à celles de 2003 - 2005.
Rajouter une légende, en vous inspirant par exemple de ce block
Vous pouvez discuter entre vous, mais le travail se fait et se rend individuellement. Soumettre au plus tard mercredi 7/12 à 23h59 le block du via le formulaire suivant.