D3
OG
Old school D3 from simpler times
All examples
By author
By category
About
ngocbien
Full window
Github gist
Travail sur la carte de France
Built with
blockbuilder.org
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> .province { fill: #000; stroke: #fff; stroke-width: 1px; } .province:hover { fill: #666; } .hidden { display: none; } div.tooltip { color: #222; background-color: #fff; padding: .5em; text-shadow: #f5f5f5 0 1px 0; border-radius: 2px; opacity: 0.9; position: absolute; } body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } </style> </head> <body> <div> <input id="slider" type="range" value="1" min="1" max="52" step="1" /> <span id="week">week</span> </div> <script> var width = 700, height = 580; console.log(width) var svg = d3.select( "body" ) .append( "svg" ) .attr( "width", width ) .attr( "height", height ); var g = svg.append( "g" ); var projection = d3.geoConicConformal() // cette fonction est bien adapte' pour la visualization de carte de France! .center([2.454071, 46.279229]).scale(2800); console.log(projection) var path = d3.geoPath() // d3.geo.path avec d3 version 3 .projection(projection); var tooltip = d3.select('body').append('div') .attr('class', 'hidden tooltip') // On definit une echelle de couleur var color = d3.scaleQuantize() .range(["rgb(237,248,233)", "rgb(186,228,179)", "rgb(116,196,118)", "rgb(99,163,84)", "rgb(60,109,44)", "rgb(0,10,100)"]); // Chargement des donnees d3.csv("GrippeFrance2014.csv", function(data) { //Set input domain for color scale console.log(data) var week="30/11/14"; var weeksArray = Object.keys(data[0]); color.domain([0,300 //d3.min(data, function(d) { return d.value; }), // d3.max(data, function(d) {return d.value; }) ]); d3.json("regions.json", function(json) { //On fusionne les donnees avec le GeoJSON for (var i = 0; i < data.length; i++) { //Nom de l'etat var dataState = data[i].region; // console.log(dataState) //Valeur associee a l'etat var dataValue = Object.values(data[i]); // console.log(dataValue); //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 == jsonState) { // for (k=0;k<dataValue.length;k++){ if (dataValue[0]==jsonState) //On injecte la valeur de l'Etat dans le json { json.features[j].properties.value = dataValue; //Pas besoin de chercher plus loin // console.log(json.features[j].properties.value) break;} } } } function drawMap(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") .attr('d', path) . style("fill", function(d) { // on prend la valeur recuperee plus haut var value = d.properties.value; // console.log(value) if (value) { return color(value[currentWeek]); } else { // si pas de valeur alors en gris return "#ccc"; } }) .attr('class', function(d) { return 'province '; }) .on('mousemove', function(d) { var mouse = d3.mouse(g.node()).map(function(d) { return parseInt(d); }); var value=d.properties.value[currentWeek]; // console.log(value[1]) tooltip.classed('hidden', false) .attr('style', 'left:' + (mouse[0] + 15) + 'px; top:' + (mouse[1] - 35) + 'px') .html(d.properties.nom+": "+ value); }) .on('mouseout', function() { tooltip.classed('hidden', true); }) // code pour la creation de la carte quand les donnees sont chargees la 1e fois. carte.enter() .append("path") .attr("class", "enter") .attr('d', path) . style("fill", function(d) { // on prend la valeur recuperee plus haut var value=d.properties.value; console.log(value) if (value) { return color(value[1]); } else { // si pas de valeur alors en gris return "#ccc"; } }) .attr('class', function(d) { return 'province '; }) .on('mousemove', function(d) { var mouse = d3.mouse(g.node()).map(function(d) { return parseInt(d); }); var value = d.properties.value; // console.log(mouse) tooltip.classed('hidden', false) .attr('style', 'left:' + (mouse[0] + 15) + 'px; top:' + (mouse[1] - 35) + 'px') .html(d.properties.nom+": "+ value[1]); }) .on('mouseout', function() { tooltip.classed('hidden', true); }) } function updateViz(value) { console.log("update " + "value"); d3.select('#week').html("Valeur de la semaine selectionnée: "+ weeksArray[value]); drawMap(value); } updateViz(); d3.select("#slider").on("input", function() { updateViz(+this.value); }); }) ; }); </script> </body>
https://d3js.org/d3.v4.min.js