D3
OG
Old school D3 from simpler times
All examples
By author
By category
About
lsoudade
Full window
Github gist
TP4_données_spatiales
Built with
blockbuilder.org
forked from
aurelient
's block:
forked from
aurelient
's block:
forked from
aurelient
's block:
forked from
aurelient
's block:
<!DOCTYPE html> <head> <meta charset="utf-8"> <script src="https://d3js.org/d3.v4.min.js"></script> <style> body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } .hidden { display: none; } div.tooltip { color: #FFF; background-color: #333; padding: .5em; border-radius: 2px; position: absolute; } .province { fill: transparent; stroke: transparent; stroke-width: 0px; } </style> </head> <body> <script> var width = 700, height = 580; var svg = d3.select( "body" ) .append( "svg" ) .attr( "width", width ) .attr( "height", height ); // On rajoute un groupe englobant toute la visualisation pour plus tard var g = svg.append( "g" ); // Ajout d'un div pour le tooltip var tooltip = d3.select('body').append('div') .attr('class', 'hidden tooltip'); var projection = d3.geoConicConformal() .center([2.454071, 46.279229]) .translate([width/2, height/2]) .scale(2800); // On definie une echelle de couleur var color = d3.scaleQuantize() .range(["rgb(237,248,233)", "rgb(186,228,179)", "rgb(116,196,118)", "rgb(49,163,84)", "rgb(0,109,44)"]); var path = d3.geoPath().projection(projection); // Chargement des donnees d3.csv("GrippeFrance2014.csv", function(data) { //color.domain([0, 2000]); color.domain([0, 6400]); // Ajustement des couleurs d3.json("france.json", function(json) { var provinces = svg.selectAll('.province') .data(json.features).enter(); sum_novembre = 0; correspondance = {} for (var i = 0; i < data.length; i++) { //Nom de l'etat var dataState = data[i].region; //Parcours des dates pour sommer les valeurs de novembre region_novembre = 0; region_semaines = [] for (var k in data[i]) { //console.log(k + " = " + data[i][k]) if (k.substring(2, 6) == '/11/') { region_novembre += parseFloat(data[i][k]); sum_novembre += region_novembre } // On stocke les semaines if (k.substring(2, 3) == '/') { region_semaines.push(parseFloat(data[i][k])); } } correspondance[dataState] = region_novembre; //console.log(correspondance) //console.log(dataState + ' ==> ' + region_semaines) //Valeur associee a l'etat //var dataValue = parseFloat(data[i].somme2014); var dataValue = region_novembre; //Recherche de l'etat dans le GeoJSON for (var j = 0; j < json.features.length; j++) { var jsonState = json.features[j].properties.nom; if (dataState.toLowerCase() == jsonState.toLowerCase()) { //On injecte la valeur de l'Etat dans le json json.features[j].properties.value = dataValue; //Pas besoin de chercher plus loin break; } } } //console.log(sum_novembre) // => pour voir comment ajuster les couleurs //console.log(correspondance) // Ajustement des couleurs color.domain([0, sum_novembre/Object.keys(correspondance).length]); g.selectAll("path") .data(json.features) .enter() .append("path") .attr("d", path) .style("fill", function(d) { //on prend la valeur recupere plus haut var value = d.properties.value; if (value) { //console.log(color.domain()+"=>"+value) return color(value); } else { // si pas de valeur alors en gris return "#ccc"; } }); // Gestion des tooltips par région provinces.append('path') .attr('class', function(d) { return 'province ' + d.properties.CODE; }) .attr('d', path) .on('mousemove', function(d) { if (correspondance[d.properties.nom] != undefined) { html_tooltip ='<strong>' + d.properties.nom + '</strong><br />' + correspondance[d.properties.nom]; } else { html_tooltip = '<strong>' + d.properties.nom + '</strong><br />Non disponible'; } var mouse = d3.mouse(svg.node()).map(function(d) { return parseInt(d); }); tooltip.classed('hidden', false) .attr('style', 'left:' + (mouse[0] + 15) + 'px; top:' + (mouse[1] - 35) + 'px') .html(html_tooltip); }) .on('mouseout', function() { tooltip.classed('hidden', true); }); }); }); </script> <div> <input id="slider" type="range" value="1" min="1" max="52" step="1" /> <span id="week">week</span> </div> </body>
https://d3js.org/d3.v4.min.js