Created
April 27, 2015 00:26
-
-
Save fdaudens/dace3bf5a5929b1d6c3a to your computer and use it in GitHub Desktop.
Nombre de femmes élues à l'Assemblée nationale
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
date | election | femmesElues | hommesElus | |
---|---|---|---|---|
22/06/1960 | Élection générale | 0 | 95 | |
14/11/1962 | Élection générale | 1 | 94 | |
05/06/1966 | Élection générale | 1 | 107 | |
29/04/1970 | Élection générale | 1 | 107 | |
29/10/1973 | Élection générale | 1 | 109 | |
15/11/1976 | Élection générale | 5 | 105 | |
13/04/1981 | Élection générale | 8 | 114 | |
02/12/1985 | Élection générale | 18 | 104 | |
25/09/1989 | Élection générale | 23 | 102 | |
12/09/1994 | Élection générale | 23 | 102 | |
30/11/1998 | Élection générale | 29 | 96 | |
14/04/2003 | Élection générale | 38 | 87 | |
26/03/2007 | Élection générale | 32 | 93 | |
08/12/2008 | Élection générale | 37 | 88 | |
04/09/2012 | Élection générale | 41 | 84 | |
07/04/2014 | Élection générale | 34 | 91 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<style> /* set the CSS */ | |
body { font: 12px Arial;} | |
h1 { | |
font-size: 20px; | |
margin: 0; | |
color: firebrick; | |
} | |
p { | |
font-size: 11px; | |
margin: 10px 0 0 0; | |
} | |
path { | |
stroke-width: 2; | |
fill: none; | |
} | |
.axis path, | |
.axis line { | |
fill: none; | |
stroke: grey; | |
stroke-width: 1; | |
shape-rendering: crispEdges; | |
} | |
</style> | |
<body> | |
<h1>Nombre de femmes et d'hommes élus depuis 1961</h1> | |
<p>Source: <a href="http://www.assnat.qc.ca/fr/patrimoine/index.html">Assemblée nationale du Québec</a></p> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script> | |
// Set the dimensions of the canvas / graph | |
var margin = {top: 30, right: 60, bottom: 20, left: 30}, | |
width = 635 - margin.left - margin.right, | |
height = 250 - margin.top - margin.bottom; | |
// Parse the date / time | |
var parseDate = d3.time.format("%d/%m/%Y").parse, | |
formatDate = d3.time.format("%d/%m/%y"), | |
bisectDate = d3.bisector(function(d) { return d.date; }).left; | |
// Set the ranges | |
var x = d3.time.scale().range([0, width]); | |
var y = d3.scale.linear().range([height, 0]); | |
// Define the axes | |
var xAxis = d3.svg.axis().scale(x) | |
.orient("bottom").ticks(5); | |
var yAxis = d3.svg.axis().scale(y) | |
.orient("left").ticks(5).outerTickSize(0); | |
// Définir la ligne pour les femmes | |
var valueAreaFemmes = d3.svg.area() | |
.x(function(d) { return x(d.date); }) | |
.y0(height, 0) | |
.y1(function(d) { return y(+d.femmesElues); }); | |
// Définir la ligne pour les hommes | |
var valueAreaHommes = d3.svg.area() | |
.x(function(d) { return x(d.date); }) | |
.y0(height, 0) | |
.y1(function(d) { return y(+d.hommesElus); }); | |
// Adds the svg canvas | |
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 areaSvg = svg.append("g"); | |
var focus = svg.append("g") | |
.style("display", "none"); | |
// Get the data | |
d3.csv("elus.csv", function(error, data) { | |
data.forEach(function(d) { | |
d.date = parseDate(d.date); | |
d.femmesElues = +d.femmesElues; | |
d.hommesElus = +d.hommesElus; | |
}); | |
// Scale the range of the data | |
x.domain(d3.extent(data, function(d) { return d.date; })); | |
y.domain([0, d3.max(data, function(d) { return d.hommesElus; })]); | |
// // Add the valueline path for hommesElus. | |
areaSvg | |
.append("path") | |
.attr("class", "area hommes") | |
.attr("d", valueAreaHommes(data)) | |
.style("fill", "steelblue") | |
.style("opacity", 0.3) | |
.attr("stroke", "none"); | |
// Add the valueline path for femmesElues. | |
areaSvg | |
.append("path") | |
.attr("class", "area femmes") | |
.attr("d", valueAreaFemmes(data)) | |
.style("fill", "firebrick") | |
.style("opacity", 0.7) | |
.attr("stroke", "none"); | |
// Add the X Axis | |
svg.append("g") | |
.attr("class", "x axis") | |
.attr("transform", "translate(0," + height + ")") | |
.call(xAxis); | |
// Add the Y Axis | |
svg.append("g") | |
.attr("class", "y axis") | |
.call(yAxis); | |
/* | |
// append the x line | |
focus.append("line") | |
.attr("class", "x") | |
.style("stroke", "grey") | |
.style("stroke-dasharray", "3,3") | |
.style("opacity", 0.5) | |
.attr("y1", 0) | |
.attr("y2", height); | |
*/ | |
// append the y line | |
focus.append("area") | |
.attr("class", "y") | |
.style("stroke", "grey") | |
.style("stroke-dasharray", "3,3") | |
.style("opacity", 0) // mis à zéro pour enlever la ligne pointillé | |
.attr("x1", width) | |
.attr("x2", width); | |
// append the circle at the intersection | |
focus.append("circle") | |
.attr("class", "y") | |
.style("fill", "none") | |
.style("stroke", "grey") | |
.attr("r", 4); | |
// Placer le texte du nombre d'élues femmes | |
focus.append("text") | |
.attr("class", "y1") | |
.style("stroke", "white") | |
.style("stroke-width", "1px") | |
.style("opacity", 1) | |
.attr("dx", -50) | |
.attr("dy", -10); | |
focus.append("text") | |
.attr("class", "y2") | |
.attr("dx", -50) | |
.attr("dy", -10); | |
// Placer le texte du nombre d'élus hommes | |
focus.append("text") | |
.attr("class", "y5") | |
.style("stroke", "white") | |
.style("stroke-width", "1px") | |
.style("opacity", 1) | |
.attr("dx", -50) | |
.attr("dy", -25); | |
focus.append("text") | |
.attr("class", "y6") | |
.attr("dx", -50) | |
.attr("dy", -25); | |
// Placer le texte de la date | |
focus.append("text") | |
.attr("class", "y3") | |
.style("stroke", "white") | |
.style("stroke-width", "1px") | |
.style("opacity", 1) | |
.attr("dx", -50) | |
.attr("dy", -40); | |
focus.append("text") | |
.attr("class", "y4") | |
.attr("dx", -50) | |
.attr("dy", -40); | |
// append the rectangle to capture mouse | |
svg.append("rect") | |
.attr("width", width) | |
.attr("height", height) | |
.style("fill", "none") | |
.style("pointer-events", "all") | |
.on("mouseover", function() { focus.style("display", null); }) | |
.on("mouseout", function() { focus.style("display", "none"); }) | |
.on("mousemove", mousemove); | |
function mousemove() { | |
var x0 = x.invert(d3.mouse(this)[0]), | |
i = bisectDate(data, x0, 1), | |
d0 = data[i - 1], | |
d1 = data[i], | |
d = x0 - d0.date > d1.date - x0 ? d1 : d0; | |
focus.select("circle.y") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")"); | |
focus.select("text.y1") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")") | |
.text("Femmes élues : " + d.femmesElues); | |
focus.select("text.y2") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")") | |
.text("Femmes élues : " + d.femmesElues); | |
focus.select("text.y3") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")") | |
.text("Élection : " + formatDate(d.date)); | |
focus.select("text.y4") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")") | |
.text("Élection : " + formatDate(d.date)); | |
focus.select("text.y5") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")") | |
.text("Hommes élus : " + d.hommesElus); | |
focus.select("text.y6") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")") | |
.text("Hommes élus : " + d.hommesElus); | |
focus.select(".x") | |
.attr("transform", | |
"translate(" + x(d.date) + "," + | |
y(d.femmesElues) + ")") | |
.attr("y2", height - y(d.femmesElues)); | |
focus.select(".y") | |
.attr("transform", | |
"translate(" + width * -1 + "," + | |
y(d.femmesElues) + ")") | |
.attr("x2", width + width); | |
} | |
}); | |
</script> | |
</body> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment