Skip to content

Instantly share code, notes, and snippets.

@rveciana
Last active May 15, 2019 17:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rveciana/f0a8ec08d0b63d0cdc6985cc37468b9a to your computer and use it in GitHub Desktop.
Save rveciana/f0a8ec08d0b63d0cdc6985cc37468b9a to your computer and use it in GitHub Desktop.
Chile's 2009 electoral results (2nd round)
license: gpl-3.0
height: 700
The Chile's 2009 electoral results (2nd round), using [d3-composite-projections](http://rveciana.github.io/d3-composite-projections/).
The election results are taken from [their official web page](http://ww2.servel.cl/index.html).
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
{"Aisén del General Carlos Ibáñez del Campo": {"Sebastián Piñera Echenique": 58.5, "Eduardo Frei Ruiz-Tagle": 41.50},
"Tarapacá": {"Sebastián Piñera Echenique": 60.63, "Eduardo Frei Ruiz-Tagle": 39.37},
"Arica y Parinacota": {"Sebastián Piñera Echenique": 52.44, "Eduardo Frei Ruiz-Tagle": 47.56},
"Antofagasta": {"Sebastián Piñera Echenique": 47.83, "Eduardo Frei Ruiz-Tagle": 52.17},
"Atacama": {"Sebastián Piñera Echenique": 46.69, "Eduardo Frei Ruiz-Tagle": 53.31},
"Coquimbo": {"Sebastián Piñera Echenique": 44.36, "Eduardo Frei Ruiz-Tagle": 55.64},
"Región Metropolitana de Santiago": {"Sebastián Piñera Echenique": 51.81, "Eduardo Frei Ruiz-Tagle": 48.19},
"Valparaíso": {"Sebastián Piñera Echenique": 53.67, "Eduardo Frei Ruiz-Tagle": 46.33},
"La Araucanía": {"Sebastián Piñera Echenique": 57.46, "Eduardo Frei Ruiz-Tagle": 42.54},
"Los Ríos": {"Sebastián Piñera Echenique": 52.62, "Eduardo Frei Ruiz-Tagle": 47.38},
"Bío-Bío": {"Sebastián Piñera Echenique": 50.15, "Eduardo Frei Ruiz-Tagle": 49.85},
"Libertador General Bernardo O'Higgins": {"Sebastián Piñera Echenique": 49.31, "Eduardo Frei Ruiz-Tagle": 50.69},
"Los Lagos": {"Sebastián Piñera Echenique": 55.93, "Eduardo Frei Ruiz-Tagle": 44.07},
"Maule": {"Sebastián Piñera Echenique": 46.94, "Eduardo Frei Ruiz-Tagle": 53.06},
"Magallanes y Antártica Chilena": {"Sebastián Piñera Echenique": 54.55, "Eduardo Frei Ruiz-Tagle": 45.45}
}
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.legendLinear
{
font-family: "Lato";
fill:#c2b59b;
}
.legendLinear2
{
font-family: "Lato";
fill:#c2b59b;
}
.legendTitle {
font-size: 1em;
}
#tooltip {
position: absolute;
top: 0;
left: 0;
z-index: 10;
margin: 0;
padding: 10px;
width: 200px;
height: 70px;
color: white;
font-family: sans-serif;
font-size: 0.9em;
font-weight: bold;
text-align: center;
background-color: rgba(0, 0, 0, 0.55);
opacity: 0;
pointer-events: none;
border-radius:5px;
transition: .2s;
}
</style>
<body>
<div id="container">
<div id="tooltip">
</div>
</div>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-legend/1.7.0/d3-legend.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-composite-projections/0.4.0/transverseMercatorChile-proj.min.js"></script>
<script>
var width = 500,
height = 700;
var projection = d3.geo.transverseMercatorChile()
.translate([150, height / 2]);
var path = d3.geo.path()
.projection(projection);
var svg = d3.select("#container").append("svg")
.attr("width", width)
.attr("height", height);
var scale1 = d3.scale.linear()
.domain([50, 60])
.range(["#ccccff","#0000ff"]);
var scale2 = d3.scale.linear()
.domain([50, 60])
.range(["#ffe6e6","#b30000"]);
d3.json("chile.json", function(error, chile) {
d3.json("elections2009.json", function(error, elections) {
console.info(elections);
var land = topojson.feature(chile, chile.objects.chile);
svg.selectAll(".region")
.data(land.features)
.enter()
.append("path")
.attr("d", path)
.style("stroke","#000")
.style("stroke-width",".5px")
.style("fill",function(d){
if (d.properties.region){
if (elections[d.properties.region]["Sebastián Piñera Echenique"] > elections[d.properties.region]["Eduardo Frei Ruiz-Tagle"]){
return scale1(elections[d.properties.region]["Sebastián Piñera Echenique"]);
} else {
return scale2(elections[d.properties.region]["Eduardo Frei Ruiz-Tagle"]);
}
}
})
.attr("class","region")
.on("mouseover", function(d){
//Show the tooltip
var x = d3.event.pageX;
var y = d3.event.pageY - 40;
d3.select("#tooltip")
.style("left", x + "px")
.style("top", y + "px")
.style("opacity", 1)
.html( d.properties.region + "<br/>SP: " + elections[d.properties.region]["Sebastián Piñera Echenique"]+"%<br/>EF: "+ elections[d.properties.region]["Eduardo Frei Ruiz-Tagle"]+"%");
})
.on("mouseout", function(){
//Hide the tooltip
d3.select("#tooltip")
.style("opacity", 0);
});
svg
.append("path")
.style("fill","none")
.style("stroke","#000")
.attr("d", projection.getCompositionBorders());
d3.select("svg").append("g")
.attr("class", "legendLinear")
.attr("transform", "translate(200,400)");
var legendLinear = d3.legend.color()
.title("Sebastián Piñera Echenique (%)")
.shapeHeight(20)
.shapeWidth(60)
.shapeRadius(10)
.cells([50,55,60])
.orient("horizontal")
.labelFormat(d3.format(".0f"))
.labelAlign("start")
.scale(scale1);
svg.select(".legendLinear")
.call(legendLinear);
d3.select("svg").append("g")
.attr("class", "legendLinear2")
.attr("transform", "translate(200,500)");
var legendLinear2 = d3.legend.color()
.title("Eduardo Frei Ruiz-Tagle (%)")
.shapeHeight(20)
.shapeWidth(60)
.shapeRadius(10)
.cells([50,55,60])
.orient("horizontal")
.labelFormat(d3.format(".0f"))
.labelAlign("start")
.scale(scale2);
svg.select(".legendLinear2")
.call(legendLinear2);
});
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment