Great tutorial by Mike Bostock. Data from Natural Earth and insee.
forked from bricedev's block: France population
| license: mit |
Great tutorial by Mike Bostock. Data from Natural Earth and insee.
forked from bricedev's block: France population
| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <style> | |
| body { | |
| font: 10px sans-serif; | |
| } | |
| .departement { | |
| stroke-width: .3px; | |
| stroke: #333; | |
| } | |
| .caption { | |
| font-weight: bold; | |
| } | |
| .key path { | |
| display: none; | |
| } | |
| .key line { | |
| stroke: #000; | |
| shape-rendering: crispEdges; | |
| } | |
| </style> | |
| <body> | |
| <script src="https://d3js.org/d3.v3.min.js"></script> | |
| <script src="https://d3js.org/topojson.v1.min.js"></script> | |
| <script src="https://d3js.org/queue.v1.min.js"></script> | |
| <script> | |
| var width = 960, | |
| height = 500, | |
| formatNumber = d3.format("s"); | |
| var color = d3.scale.threshold() | |
| .domain([250000, 500000, 750000, 1000000, 1250000,1500000,1750000]) | |
| .range(["#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]); | |
| var x = d3.scale.linear() | |
| .domain([77156, 2579208]) | |
| .range([0, 300]); | |
| var xAxis = d3.svg.axis() | |
| .scale(x) | |
| .orient("bottom") | |
| .tickSize(13) | |
| .tickValues(color.domain()) | |
| .tickFormat(function(d) { return formatNumber(d); }); | |
| var projection = d3.geo.albers() | |
| .center([0, 49.5]) | |
| .rotate([-2.8, 3]) | |
| .parallels([45, 55]) | |
| .scale(2500) | |
| .translate([width / 2, height / 2]); | |
| var path = d3.geo.path() | |
| .projection(projection); | |
| var svg = d3.select('body').append("svg") | |
| .attr("width", width) | |
| .attr("height", height); | |
| var g = svg.append("g") | |
| .attr("class", "key") | |
| .attr("transform", "translate(" + 40 + "," + 40 + ")"); | |
| g.selectAll("rect") | |
| .data(color.range().map(function(currentColor) { | |
| var d = color.invertExtent(currentColor); | |
| if (d[0] == null) d[0] = x.domain()[0]; | |
| if (d[1] == null) d[1] = x.domain()[1]; | |
| return d; | |
| })) | |
| .enter().append("rect") | |
| .attr("height", 8) | |
| .attr("x", function(d) { return x(d[0]); }) | |
| .attr("width", function(d) { return x(d[1]) - x(d[0]); }) | |
| .style("fill", function(d) { return color(d[0]); }); | |
| g.call(xAxis).append("text") | |
| .attr("class", "caption") | |
| .attr("y", -6) | |
| .text("Population"); | |
| queue() | |
| .defer(d3.json, "france.json") | |
| .defer(d3.csv, "population.csv") | |
| .await(ready); | |
| function ready(error, france, population) { | |
| var regions = svg.selectAll(".departements") | |
| .data(topojson.feature(france, france.objects.regions).features) | |
| .enter().append("path") | |
| .attr("class", "departement") | |
| .attr("d", path) | |
| .style("fill",function(departement){ | |
| var paringData = population.filter(function(population){ return departement.properties.name === population.name; })[0]; | |
| return paringData ? color(paringData.population) : color(0); | |
| }); | |
| }; | |
| </script> |
| name | population | |
|---|---|---|
| Ain | 603827 | |
| Aisne | 541302 | |
| Allier | 342729 | |
| Alpes-de-Haute-Provence | 160959 | |
| Hautes-Alpes | 138605 | |
| Alpes-Maritimes | 1081244 | |
| Ardèche | 317277 | |
| Ardennes | 283110 | |
| Ariège | 152286 | |
| Aube | 303997 | |
| Aude | 359967 | |
| Aveyron | 275813 | |
| Bouches-du-Rhône | 1975896 | |
| Calvados | 685262 | |
| Cantal | 147577 | |
| Charente | 352705 | |
| Charente-Maritime | 625682 | |
| Cher | 311694 | |
| Corrèze | 242454 | |
| Corse-du-Sud | 145846 | |
| Haute-Corse | 168640 | |
| Côte-d'Or | 525931 | |
| Côtes-d'Armor | 594375 | |
| Creuse | 122560 | |
| Dordogne | 415168 | |
| Doubs | 529103 | |
| Drôme | 487993 | |
| Eure | 588111 | |
| Eure-et-Loir | 430416 | |
| Finistère | 899870 | |
| Gard | 718357 | |
| Haute-Garonne | 1260226 | |
| Gers | 188893 | |
| Gironde | 1463662 | |
| Hérault | 1062036 | |
| Ille-et-Vilaine | 996439 | |
| Indre | 230175 | |
| Indre-et-Loire | 593683 | |
| Isère | 1215212 | |
| Jura | 261294 | |
| Landes | 387929 | |
| Loir-et-Cher | 331280 | |
| Loire | 749053 | |
| Haute-Loire | 224907 | |
| Loire-Atlantique | 1296364 | |
| Loiret | 659587 | |
| Lot | 174754 | |
| Lot-et-Garonne | 330866 | |
| Lozère | 77156 | |
| Maine-et-Loire | 790343 | |
| Manche | 499531 | |
| Marne | 566571 | |
| Haute-Marne | 182375 | |
| Mayenne | 307031 | |
| Meurthe-et-Moselle | 733124 | |
| Meuse | 193557 | |
| Morbihan | 727083 | |
| Moselle | 1045146 | |
| Nièvre | 218341 | |
| Nord | 2579208 | |
| Oise | 805642 | |
| Orne | 290891 | |
| Pas-de-Calais | 1462807 | |
| Puy-de-Dôme | 635469 | |
| Pyrénées-Atlantiques | 656608 | |
| Hautes-Pyrénées | 229228 | |
| Pyrénées-Orientales | 452530 | |
| Bas-Rhin | 1099269 | |
| Haut-Rhin | 753056 | |
| Rhône | 1744236 | |
| Haute-Saône | 239695 | |
| Saône-et-Loire | 555999 | |
| Sarthe | 565718 | |
| Savoie | 418949 | |
| Haute-Savoie | 746994 | |
| Paris | 2249975 | |
| Seine-Maritime | 1251282 | |
| Seine-et-Marne | 1338427 | |
| Yvelines | 1413635 | |
| Deux-Sèvres | 370939 | |
| Somme | 571211 | |
| Tarn | 377675 | |
| Tarn-et-Garonne | 244545 | |
| Var | 1012735 | |
| Vaucluse | 546630 | |
| Vendée | 641657 | |
| Vienne | 428447 | |
| Haute-Vienne | 376058 | |
| Vosges | 378830 | |
| Yonne | 342463 | |
| Territoire de Belfort | 143348 | |
| Essonne | 1225191 | |
| Hauts-de-Seine | 1581628 | |
| Seine-Saint-Denis | 1529928 | |
| Val-de-Marne | 1333702 | |
| Val-d'Oise | 1180365 |