Skip to content

Instantly share code, notes, and snippets.

@AminaSGitHub
Last active January 8, 2018 10:38
Show Gist options
  • Save AminaSGitHub/fa352d3d806fa632647f703a1b0d3a8d to your computer and use it in GitHub Desktop.
Save AminaSGitHub/fa352d3d806fa632647f703a1b0d3a8d to your computer and use it in GitHub Desktop.
Vizu_Part1_All
license: gpl-3.0
<!DOCTYPE html>
<meta charset="utf-8">
<title>Dorling Cartogram</title>
<style>
circle {
fill: #eee;
stroke: #000;
stroke-width: 1.5px;
}
h1 {
text-align : center;
}
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
svg {
position: relative;
left: 30px;
border: 3px solid #B0E0E6;
}
.province {
fill: #000;
stroke: #fff;
stroke-width: 1px;
}
.province:hover {
opacity: 0.5;
}
.Node{
fill: #000;
stroke: black;
stroke-width: 2px;
}
.Node:hover{
opacity: 0.5;
}
.hiddenN {
display: none;
}
div.tooltipN {
color: #222;
background-color: #fff;
padding: .5em;
text-shadow: #f5f5f5 0 1px 0;
border-radius: 2px;
opacity: 0.9;
position: absolute;
}
.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;
}
</style>
<body>
<div>
<input id="sliderYear" type="range" value="1" min="1" max="5" step="1" />
<span id="year">year </span>
</div>
<div>
<input id="slider" type="range" value="1" min="1" max="12" step="1" />
<span id="month">month </span>
</div>
<div>
<span >Nœud </span>
<input id="sliderType" type="range" value="1" min="1" max="2" step="1" />
<span >Carte </span>
</div>
<script src="//d3js.org/d3.v4.min.js"></script>
<script>
// On definie une echelle de couleur
var color = d3.scaleQuantize()
.range(["rgb(213,239,204)",
"rgb(169,221,160)",
"rgb(94,186,97)",
"rgb(42,141,71)",
"rgb(0,91,36)"]);
var margin = {top: 0, right: 0, bottom: 0, left: 0},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom,
padding = 3;
var projection = d3.geoConicConformal().center([2.454071, 46.279229]).scale(2000);
var path = d3.geoPath() // d3.geo.path avec d3 version 3
.projection(projection);
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var pas,minG,maxG;
var nbrColors = 5;
d3.csv("TER_France2013_2017.csv", function(data) {
d3.json("regions.json", function(error, states) {
if (error) throw error;
var jsonF;
var listDates = Object.keys(data[0]);
var listYears = []; // Will contain [2013,2014,2015,2016]
var listMonths = []; // Will contain [Janvier,...,Decembre]
var currentYear = 1; //"2013";
var currentMonth = 1; //" Janvier";
/*Begin legend*/
var element;
minG = parseFloat(Object.values(data[0])[1]);
maxG = parseFloat(Object.values(data[0])[1]);
for (var i = 0; i < data.length; i++) {
for(var j = 1; j < listDates.length-4; j++){
//console.log("ELEMENT : ===> data : "+Object.values(data[i])[j]);
element = parseFloat(Object.values(data[i])[j]);
if (element < minG ){
minG = element;
}
if (element > maxG ){
maxG = element;
}
}
}
// console.log("MAX = : "+maxG + " MIN = : "+ minG);
color.domain([ minG,maxG ]);
pas = (maxG - minG)/nbrColors;
//console.log("Pas "+ pas);
drawLegende(minG, maxG,pas);
/*End legend*/
var radius = d3.scaleSqrt()
.domain([0,parseFloat(maxG)])
.range([0, 35]);
for(var m = 1; m< listDates.length; m++){
var datee = listDates[m].split(" ");
if (listYears.findIndex(p => p == datee[1]) === (-1)) {
listYears.push(datee[1]);
}
if (listMonths.findIndex(p => p == datee[0]) === (-1)) {
if(datee[0] != "Somme2013" && datee[0] != "Somme2014" && datee[0] != "Somme2015" && datee[0] != "Somme2016" && datee[0] != "Somme2017"){
listMonths.push(datee[0]);
}
}
}
var first = listDates[1].split(" ");
// first value for sliderYear
var firstYear = listYears[0];
var firstMonth = listMonths[0];
//d3.select('#month').html(first[0]);
d3.select('#month').html(firstMonth);
d3.select('#year').html(firstYear);
// update the month in slider
d3.select("#slider").on("input", function() {
//currentMonth = listMonths[this.value-1];
currentMonth = +this.value;
updateViz(+this.value);
});
d3.select("#sliderYear").on("input", function() {
currentYear = +this.value;
updateViz2(+this.value);
});
//On fusionne les donnees avec le GeoJSON des regions
for (var i = 0; i < data.length; i++) {
// Find the name of the region in csv file
var dataState = data[i].region;
//console.log("DataState : " + dataState )
for (var j = 0; j< states.features.length; j++){
// Find the name of the region in json file
var jsonState = states.features[j].properties.nom;//
if (dataState == jsonState) {
states.features[j].properties.tab = Object.values(data[i]);
//stop because result found
break;
}
}
}
jsonF = states;
var currentViz =1;
d3.select("#sliderType").on("input", function() {
currentViz = +this.value;
console.log("CurrentViz = ==========> "+currentViz);
if(currentViz == 1){
drawNodes(currentMonth, currentYear);
}else{
drawMap(currentMonth, currentYear);
}
});
if(currentViz == 1){
drawNodes(currentMonth, currentYear);
}else{
drawMap(currentMonth, currentYear);
}
//update elements
function updateViz(val){
d3.select('#month').html(listMonths[val-1]);
if(currentViz == 1){
drawNodes(currentMonth, currentYear);
}else{
drawMap(currentMonth, currentYear);
}
};
function updateViz2(valY){
d3.select('#year').html(listYears[valY-1]);
if(currentViz == 1){
drawNodes(currentMonth, currentYear);
}else{
drawMap(currentMonth, currentYear);
}
};
var carte;
function drawMap(monthBis, yearBis){
var tooltip = d3.select('body')
.append('div')
.attr('class', 'hidden tooltip');
svg.selectAll("circle").remove();
console.log("JE SUIS DANS DRAW MAP");
svg.selectAll("path")
.data(states.features)
.enter()
.append("path")
.attr("d", path);
var nbr;
var currentDate = 12*(yearBis-1)+monthBis ;
//fevrier 2017 => 2017 = 5 fevrier 2 ====> 12*(yearBis-1)+monthBis
// console.log("cu rrentDate ==========> " + currentDate);
//Set input domain for color scale
color.domain([ minG,maxG]);
carte = svg.selectAll("path")
.data(jsonF.features);
carte
.on('mousemove', function(d) {
if(d.properties.tab == undefined || d.properties.tab == "NaN"){
nbr = "undefined";
}else {
nbr = d.properties.tab[currentDate];
}
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(d.properties.nom + ":" + parseFloat(nbr).toFixed(2)+ " %");
})
.on('mouseout', function() {
tooltip.classed('hidden', true);
});
//code in case of update of the map / change of month
carte
.attr('class', function(d) {
return 'province ' + d.properties.code;
})
.attr('d', path)
.style("fill", function(d) {
// get value found above
var tab = d.properties.tab;
if (tab && tab[currentDate] != "") {
// console.log("tabbbbb ==>" + tab[currentDate]);
return color(tab[currentDate]);
} else {
// if no value then color with Grey
return "#ccc";
}
});
//fist time of coloring the map
carte.selectAll("path")
.enter()
.data(jsonF.features)
.append("path")
.attr("class", "enter")
.attr("d", path)
.style("fill", function(d) {
// get value found above
var tab = d.properties.tab;
console.log("tabbbb ==>" + tab[currentDate]);
if (tab && tab[currentDate] != "") {
return color(tab[currentDate]);
} else {
// if no value then color with Grey
return "#ccc";
}
});
}; // End of drawMap//
function drawNodes(monthBis, yearBis){
console.log("JE SUIS DANS DRAW NODES");
svg.selectAll('path').remove();
svg.selectAll('circle').remove();
var currentDate = 12*(yearBis-1)+monthBis ;
var c = color;
var nbr;
var nodes = states.features
.map(function(d) {
if (d.properties.tab == undefined){
nbr="undefined";
}else {
nbr=d.properties.tab[currentDate];
}
if(d.geometry.coordinates[0][0].length === 2){
console.log("size = 2");
var point = projection(d.geometry.coordinates[0][0]),
value = nbr;
}else{
//console.log("size > 2");
var point = projection(d.geometry.coordinates[0][0][0]),
value = nbr;
}
var rayon;
if(nbr=="undefined"){
rayon =20;
}else {
rayon = value;
}
return {
x: point[0], y: point[1],
x0: point[0], y0: point[1],
r: radius(rayon) ,
value: value,
region: d.properties.nom
};
});
// console.log("NBR NODES "+nodes.length);
var force = d3.forceSimulation(nodes)
.force('charge',d3.forceManyBody())
.force('x', d3.forceX(width/2).strength(0.005))
.force('y', d3.forceY(height/2).strength(0.005));
// .force("collide", d3.forceCollide().strength(0.000000000000000005));
var tooltipN = d3.select('body')
.append('div')
.attr('class', 'hiddenN tooltipN');
var node = svg.selectAll("circle")
.data(nodes)
.enter().append("circle")
.attr("r", function(d) { return d.r; })
.attr('class', function(d) {
return 'Node ' + d.code;
})
.on("mouseover", function(d){
var mouse = d3.mouse(svg.node()).map(function(d) {
return parseInt(d);
});
tooltipN.classed('hiddenN', false)
.attr('style', 'left:' + (mouse[0] + 15) +
'px; top:' + (mouse[1] - 35) + 'px')
.html(d.region + " : "+d.value);
})
.on('mouseout', function() {
tooltipN.classed('hiddenN', true);
})
.style("fill", function(d) {
// get value found above
var tab = d.value;
if (tab && d.value != "undefined") {
// console.log("tabbbbb ==>" + d.value);
return c(d.value);
} else {
// if no value then color with Grey
return "#ccc";
}
});
force
.nodes(nodes)
.on("tick", tick);
//.restart(); ///
function tick(e) {
//console.log( d3.select(this));
node.each(gravity(force.alpha() * .1))
.each(collide(.5))
.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
}
function gravity(k) {
return function(d) {
d.x += (d.x0 - d.x) * k;
d.y += (d.y0 - d.y) * k;
};
}
function collide(k) {
var q = d3.quadtree().addAll(nodes);
return function(node) {
var nr = node.r + padding,
nx1 = node.x - nr,
nx2 = node.x + nr,
ny1 = node.y - nr,
ny2 = node.y + nr;
q.visit(function(quad, x1, y1, x2, y2) {
if (quad.point && (quad.point !== node)) {
var x = node.x - quad.point.x,
y = node.y - quad.point.y,
l = x * x + y * y,
r = nr + quad.point.r;
if (l < r * r) {
l = ((l = Math.sqrt(l)) - r) / l * k;
node.x -= x *= l;
node.y -= y *= l;
quad.point.x += x;
quad.point.y += y;
}
}
return x1 > nx2 || x2 < nx1 || y1 > ny2 || y2 < ny1;
});
};
}
}
}); // End of "regions.json"
/*Function to add legende */
function drawLegende(min, max,pas){
var c = color;
var limites = [];
c.domain([min,max]);
//console.log("limites Avant : "+ limites);
var bool;
for(var it=min; it<max; it = it+pas){
limites.push(it);
}
//console.log("limites Apres : "+ limites);//
var legend = svg.selectAll(".legend")
.data(limites)
.enter()
.append("g")
.attr("class", "legend")
.attr("transform", function(d, i) {
return "translate(0," + i * 20 + ")";
});
legend.append("rect")
.attr("x", width - 18)
.attr("width", 18)
.attr("height", 18)
.style("fill", function(d) { return color(d); });
legend.append("text")
.attr("x", width - 24)
.attr("y", 9)
.attr("dy", ".35em")
.style("text-anchor", "end")
.text(function(d) { var dPas = d+ pas;return parseFloat(d).toFixed(2) + " %-" + parseFloat(dPas).toFixed(2)+ " %" ; });
}
}); //End of CSV File
</script>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
We can make this file beautiful and searchable if this error is corrected: It looks like row 2 should actually have 64 columns, instead of 65 in line 1.
region,Janvier 2013 ,Fevrier 2013,Mars 2013,Avril 2013,Mai 2013,Juin 2013,Juillet 2013,Aout 2013,Septembre 2013,Octobre 2013,Novembre 2013,Decembre 2013,Janvier 2014,Fevrier 2014,Mars 2014,Avril 2014,Mai 2014,Juin 2014,Juillet 2014,Aout 2014,Septembre 2014,Octobre 2014,Novembre 2014,Decembre 2014,Janvier 2015,Fevrier 2015,Mars 2015,Avril 2015,Mai 2015,Juin 2015,Juillet 2015,Aout 2015,Septembre 2015,Octobre 2015,Novembre 2015,Decembre 2015,Janvier 2016,Fevrier 2016,Mars 2016,Avril 2016,Mai 2016,Juin 2016,Juillet 2016,Aout 2016,Septembre 2016,Octobre 2016,Novembre 2016,Decembre 2016,Janvier 2017,Fevrier 2017,Mars 2017,Avril 2017,Mai 2017,Juin 2017,Juillet 2017,Aout 2017,Septembre 2017,Octobre 2017,Novembre 2017,Somme2013,Somme2014,Somme2015,Somme2016
Alsace,5.563573028,5.130591907,4.316020483,3.719622201,3.054826089,5.199326221,4.024339649,3.574208614,4.89893617,5.814977974,4.967707212,5.153606411,4.694356567,5.209385876,3.624722466,3.378452134,4.204059829,11.52179297,4.853259562,3.536693192,3.138351984,5.652432379,4.205811667,4.443968517,4.432862008,4.597828495,4.436548223,3.723433168,3.334091944,4.969450102,4.85730926,3.910303929,4.875687793,5.114629382,6.684155873,5.240407706,6.551141167,6.380585021,5.144746829,5.144746829,4.932011984,6.938084185,5.040455499,2.939122707,4.628741608,6.154469076,8.924714188,7.565322538,9.050088682,8.021764477,5.764338317,5.839416058,5.637416279,7.330831395,6.22106632,3.684025999,6.830256641,6.830256641,7.966221937,,,,,
Aquitaine,10.07531794,12.69240474,11.11791355,12.72661784,10.30726898,12.16879293,20.17336485,11.73913043,11.49129262,12.25939505,14.23453547,12.95160191,10.3191819,11.80820611,10.89987326,9.11262391,8.883628208,16.85230024,18.75734085,13.8651472,13.42860383,13.46049637,14.22563979,18.11769892,14.78085868,12.92770934,11.36146876,15.05056514,13.07922272,16.63875598,18.7388033,13.92647587,12.67651888,14.9330587,19.44248412,19.57728185,15.68557498,15.39225422,12.29640681,14.91862568,17.95935297,16.63015699,13.98822997,12.35428696,16.55614741,15.14181153,14.22773393,12.37794955,13.69213321,12.4504084,8.40754877,9.800971997,9.969112792,15.2139123,12.32890917,10.50615043,11.76981542,12.91288192,13.71368199,,,,,
Auvergne,8.366464996,9.3708166,8.334967641,7.247212611,8.486789432,9.067813172,12.63479511,9.139784946,8.917954816,12.96682161,17.57772463,14.6700707,10.0565682,6.401384083,6.150793651,7.74292608,8.401030315,11.61480687,6.271379704,6.082534715,8.591331269,8.06504065,9.118870997,8.695652174,7.083671812,8.564045773,4.847841472,4.05643739,4.650330889,5.935194097,7.679684936,8.574293833,7.811988208,8.104803493,14.19230769,6.551664053,7.165775401,7.069784436,7.133346015,8.675263775,9.934318555,9.819532909,7.336956522,6.237176857,8.519682129,9.007808037,11.50166389,11.64835165,11.17059243,9.404057481,10.40980607,6.558197747,8.284157966,7.520184544,8.860195904,8.042839143,6.518876207,8.013496415,,,,,,
Basse-Normandie,10.35725008,6.870229008,22.11392019,8.506674946,10.76148521,9.604519774,7.5491481,6.879871002,8.088916332,11.21577863,14.20271143,13.90161931,4.309825196,5.282271377,5.722239406,4.247226624,6.217783505,14.47688564,5.360493165,5.753803596,6.4,8.601503759,7.321187584,8.925143954,5.86259542,5.142667551,4.747320061,4.281725101,3.327895595,5.859257022,6.432591798,6.045751634,6.161137441,10.87027915,15.72836031,8.901804833,7.567735908,6.952899712,7.520981278,7.204610951,9.941520468,13.11546841,7.705627706,6.558311948,5.371900826,6.340694006,17.10174029,8.330703692,7.346559206,6.849779586,7.002716571,5.01650165,8.458346633,8.958912573,7.912844037,6.277118889,6.673083093,9.454881429,,,,,,
Bourgogne,8.25,9.584793745,11.78764624,9.917245061,11.77567604,19.48470209,9.7596217,6.787392867,12.75203632,12.90163733,14.13398693,13.12721744,6.737503019,8.472436527,9.313790806,7.487259898,8.640507333,16.8740667,8.961672474,7.925200356,8.737620659,12.51833741,13.91079685,9.450193243,8.11079369,7.506963788,7.59155646,8.523908524,7.708923991,9.60934556,10.61717738,9.139307897,9.16872001,12.53535613,12.80454042,12.07902413,9.141238573,10.45190275,9.370345295,10.23871947,12.15942029,14.26837725,10.20104244,9.079210752,9.695145885,11.06316202,19.76290098,12.60669731,10.65765532,9.156167594,10.87938363,8.011996572,7.557336281,11.64847312,13.32599119,9.57159976,12.81359162,11.08843537,11.87376168,,,,,
Bretagne,7.964904284,6.896105576,12.90206864,8.051606738,4.889056036,4.353879256,7.429037077,4.773365423,6.376247262,9.454835766,9.674625758,10.99580224,5.50051247,8.897196262,3.041870452,4.91742667,4.921968788,8.085676037,4.428191489,4.604374831,4.986218993,7.459207459,8.060453401,8.156727452,6.445475086,6.550937658,5.684786665,4.18867461,3.926157046,4.826936661,4.483347566,6.070921986,7.21574344,6.841783751,9.177095184,6.096839114,8.11605317,5.738643593,6.970509383,5.857580398,5.710925248,5.512234472,6.043720532,4.561841375,5.168112154,5.075513741,13.59543437,5.513604219,4.641812865,2.55307713,3.689064559,12.86256438,4.217385958,6.42282554,4.203923662,3.78464168,5.507535461,6.869641679,7.458997978,,,,,
Centre,10.19024489,8.664661989,8.522786256,6.936850005,5.356548741,12.3104465,11.95332212,6.614104249,10.61429168,12.37699097,13.57420789,16.68891856,6.279468495,7.06386015,7.530391715,6.342825237,7.393301221,21.7750258,9.769743921,6.587292756,6.603245663,9.259863058,9.281794321,10.05988024,7.948040511,9.372364775,7.403290351,7.352603808,6.809735044,10,11.77035535,7.809462087,8.628987129,10.52748227,13.17635866,8.590733591,9.19027437,9.13166588,8.771929825,8.712847555,10.15297311,13.97655546,9.288406118,9.260250509,10.43767313,8.284782102,17.6944017,12.16878201,12.12282759,8.651766402,7.165668663,7.549905208,8.926650893,12.03831825,8.69703054,6.585392402,8.105520689,6.869641679,14.86300645,,,,,
Champagne-Ardenne,5.821299639,4.671608343,8.397756556,4.807846921,3.806281912,7.677989763,7.26192441,5.391026778,8.543263965,12.6297846,17.83291977,11.32075472,4.602379461,4.546255507,8.050436469,4.564178613,5.837691918,8.951078829,5.733034018,4.464931309,6.152839143,5.908788282,5.483870968,6.760098928,5.686817663,5.094976034,5.228648285,8.486888731,4.598502003,6.002302253,6.805389732,6.126126126,7.029068813,5.254120879,8.407994487,6.022959585,7.209828645,6.614447346,5.819829239,7.855740046,10.41342328,10.81755773,5.778322535,5.437510457,6.768734891,6.933289625,9.780666125,7.006013145,,,,,,,,,,,,,,,,
Franche-Comte,10.89941641,11.2383133,7.188160677,6.08311229,7.808171745,9.447943683,10.31147224,6.168831169,10.59822747,10.91904843,13.24200913,11.1292369,7.22686211,6.328109502,7.797641689,8.822463768,10.92745638,12.51152074,9.164467898,5.729452682,8.537229361,12.3559322,9.989002933,9.167249825,8.405900124,9.791584742,6.100141044,7.429718876,8.620689655,8.890456871,7.969605937,7.125581395,9.252731759,8.406151695,10.6033237,9.561532793,7.661431065,8.895761324,7.860498735,10.58469637,9.586180714,16.95662259,11.05458814,7.355212355,10.61578491,10.25906736,15.29139191,12.30611897,13.72649573,11.37944359,9.016949153,7.107069957,7.898375389,7.345428924,6.684981685,6.213070725,8.120817508,8.843419456,,,,,,
Haute-Normandie,9.518213866,4.842026547,8.265980896,5.139526669,4.204149073,6.020848311,6.244823588,4.20640327,6.384829506,7.287853577,11.05628655,16.27394474,6.912972085,6.564748201,4.75465313,5.303161168,4.57960644,11.89974233,7.524190858,5.199039121,5.460980954,8.311561071,7.178817826,7.637231504,7.66649891,6.547510487,6.497649429,5.296866886,3.207160172,5.91775326,5.268406182,4.693079408,6.019384458,10.40860938,12.02567491,6.720702465,6.081429308,6.011216264,5.449059283,8.511013216,8.89198329,7.913340935,6.073790463,5.296321526,6.550522648,5.390463027,10.99239406,8.367922962,7.389730086,5.012621709,4.786379698,5.307705872,5.952176157,9.30153322,6.855413105,4.578066279,5.822036844,7.321131448,,,,,,
Languedoc-Roussillon,10.03184713,12.982228,19.2494929,14.13316583,11.77429212,15.88327458,15.42416452,10.48109966,13.77388535,15.60112585,16.67042635,16.14736842,8.627370997,8.166747928,9.496080627,7.901726428,11.66258625,26.11308386,12.99610895,13.70332997,18.70625663,18.32146037,18.37181045,18.81771079,10.57631412,12.81459247,12.50570516,10.89528913,12.21047897,16.75953708,17.89473684,21.01463415,14.00206825,12.47751799,18.02168022,11.70590849,14.91908668,11.65929204,10.91846298,10.37667072,16.25751503,19.0625,17.11967546,15.59816257,14.02542373,17.68722467,15.57557118,13.16078087,15.8,14.79857495,12.58928571,10.52389706,9.374309087,12.65661499,16.60642143,15.72614108,11.39954853,16.57957245,,,,,,
Limousin,6.733036416,7.596404755,8.197543244,9.727047146,5.527383367,13.09018236,11.83035714,10.15565195,15.20979021,15.41279922,26.1713694,25.08499271,8.370146478,6.551362683,6.139921722,4.597701149,10.06645336,25.56587348,8.980176738,5.737910298,7.798833819,6.989619377,11.1649248,9.625540086,8.526216344,7.088274045,7.416325548,5.586734694,5.831589958,7.551650439,12.27589641,10.57622174,9.243498818,11.97148476,13.15123925,7.036692987,8.594491928,9.690976514,9.115281501,6.791754757,8.463687151,11.89227002,11.4476386,9.779179811,11.59896689,15.20041645,21.41958218,15.71938169,12.67958951,12.34076433,9.609043806,8.704827222,10.84366642,14.64140731,11.11977137,10.49893592,14.41582097,12.46246246,14.27107353,,,,,
Lorraine,,,,,,,,,,,,,,,,,,,,,,,,,,5.756034552,,,,,,,,,,,7.178346311,5.688,6.529777358,5.671033022,8.025073518,12.21023181,6.15206036,4.477104749,7.392897763,7.098703888,8.711893803,7.565637193,,,,,,,,,,,,,,,,
Midi-Pyrenees,14.25438596,14.58795873,10.244148,8.006131352,8.402380675,10.51187209,16.28752467,9.431452954,10.11427821,9.619544471,14.96266124,20.99987924,13.51652019,11.61805036,11.01413645,9.456950569,8.694105088,12.86392405,13.09204647,10.46360741,9.059593524,12.04776958,15.25295746,17.81140861,10.57758423,11.9246601,8.511371468,9.525556371,8.741689239,11.26974839,9.443710201,8.9408867,11.41620144,15.48585486,16.32255551,12.40319314,11.39451728,10.81048141,11.8430792,10.31155225,11.69828365,14.48223156,12.78621045,11.86862404,12.62584389,10.68031306,18.93054702,16.96526508,16.79275562,13.59289617,12.79935831,11.784169,10.15436565,13.07738452,12.2314885,10.24817879,12.61733395,14.7634382,14.68382904,,,,,
Nord-Pas-de-Calais,13.88152078,7.380707175,17.8030303,8.226739557,6.083273747,8.061431143,8.038585209,7.936507937,10.07681639,13.13892893,13.4995351,12.79695051,8.497723824,8.536727782,8.284179482,4.886525196,7.229651001,,9.583448276,5.910742675,9.524054806,10.01938273,13.35457544,11.73703958,9.73773179,9.784883721,11.23689727,,8.037637456,10.60054362,8.47510633,7.23566879,9.470288796,11.8334744,15.26652452,9.111702128,9.767856207,12.44224948,11.50662252,8.739542666,12.44571361,14.23267327,8.949390999,8.50764526,10.43781245,10.37775667,16.4040426,9.504066337,10.1457929,8.43373494,8.420326965,7.606313021,9.870447064,12.37052856,8.038776049,7.825868143,11.53284672,12.33834851,15.10411105,,,,,
Pays de la Loire,8.888248294,6.657285127,8.874656908,7.276081164,10.8011809,10.57423694,10.76063086,6.909985647,10.28671257,12.72602201,11.08252947,14.52525253,8.168244364,8.820678514,8.376251093,7.146367836,6.1865543,9.865528834,9.407474932,6.097335307,8.045037683,9.287739497,8.42064789,10.97967052,10.18965826,9.412563009,7.63304702,5.587967183,6.11094332,10.26983124,10.14588235,8.843601896,8.528931304,10.24348569,12.84845183,10.73260998,7.826855124,7.800971747,8.960316035,7.907862519,9.174870598,10.18560435,9.814499337,8.734017648,9.865900383,10.06775539,19.71767261,11.7906802,10.90155988,7.531887161,8.787170063,6.382393398,7.521773555,11.05249275,8.68070477,7.740517662,9.123405638,10.21785824,15.54753309,,,,,
Picardie,11.28126595,9.368575624,9.750957854,6.513339466,6.454069491,7.89300179,9.752423986,5.647941594,6.967650196,11.43937396,12.7010538,10.68773234,9.110867179,7.27562899,6.830185301,7.1794411,6.040144297,11.49234694,12.12682726,9.274968895,11.68818927,12.6689036,10.37554408,9.206995466,10.95233705,11.85105969,12.1167118,10.99212887,9.555946792,11.27054526,11.12075617,9.694189602,8.040770102,11.8544498,14.41441441,8.376142795,9.953867991,12.27807886,11.33125122,7.570219315,11.08272745,16.18534206,11.33086115,10.4622369,7.331351887,11.82211583,18.78782148,12.08414419,13.82696391,8.933830748,8.371371975,7.538068665,9.945355191,13.38995302,10.30117852,7.726972961,10.90892124,12.17861976,,,,,,
Poitou-Charentes,10.40073417,4.678168547,6.204485872,6.110102843,5.376670717,11.27569528,13.76326075,7.392550143,10.31019202,11.19931954,10.52465234,8.95140665,5.471956224,9.110629067,6.564929456,6.1774942,6.552623949,13.44444444,9.76744186,7.286077379,8.095909732,7.565144298,9.532538955,12.09994385,10.78873239,10.88834053,8.553203827,10.12918379,6.417274939,9.417808219,10.51752922,9.293785311,8.791208791,11.18901548,11.62014563,15.69008609,14.22005171,16.54888104,15.30766899,11.07766406,14.59086428,14.18498548,12.71791941,11.42540211,8.916833381,11.51207874,18.14133017,16.70428894,14.95975576,12.25080386,12.40694789,10.38611194,10.61403509,11.40706427,12.97203805,9.93227991,10.83819466,10.61843641,14.47368421,,,,,
Provence-Alpes-Cote d'Azur,18.29320722,17.48668627,21.16621409,21.79802039,19.3734976,24.14834314,24.457537,20.15798713,17.69041769,28.03560076,21.28849395,40.58594275,27.33455757,24.80082038,18.37606838,21.65836986,17.61669176,20.6833435,19.48669839,19.36961955,22.62752921,22.26866941,30.06177606,28.20893308,23.14092564,20.81882746,18.46776299,20.4196178,15.80015715,19.81808525,23.80073801,21.19915714,18.97764381,24.97664487,21.13952084,17.91592981,15.62519626,14.80371163,16.4556962,17.92317615,17.9198778,20.61691542,21.71991842,17.53503185,16.61696937,18.87254902,17.57949384,20.2455196,18.78172589,15.92534325,15.2957041,18.15363881,17.35637314,19.05177624,21.32323368,21.08639006,17.80355654,17.66087978,,,,,,
Rhone-Alpes,13.39461798,14.44621655,13.11088642,13.05533905,10.40850588,13.1060578,13.29920707,9.438559322,11.62314026,13.08477079,15.48134328,18.37106221,12.22008273,11.663286,11.44944333,11.45455863,12.22923856,24.84254051,13.07340331,8.849230769,10.91794159,13.25537978,15.42857143,17.23047977,12.27407878,16.63666475,10.7331796,10.92841244,11.23671461,12.43587041,14.50845958,10.11227517,13.98177345,12.71165815,16.07889802,12.67864723,12.64933478,14.05619489,13.77279908,13.11283591,13.13931533,17.35744788,12.57237069,10.43296414,15.41048113,14.74552552,18.59315589,16.35318333,15.99047681,12.63898509,13.7189277,11.74706798,13.84416795,13.94077614,12.96187252,11.81158336,11.45647042,13.36009968,,,,,,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment