Skip to content

Instantly share code, notes, and snippets.

@cflavs
Last active February 4, 2016 21:59
Show Gist options
  • Save cflavs/5ffd1ee468f0da6a82ca to your computer and use it in GitHub Desktop.
Save cflavs/5ffd1ee468f0da6a82ca to your computer and use it in GitHub Desktop.
Índice de Reprovações do Ensino Médio por UFs
Uf 2007 2008 2009 2010
RO 12.4 12.1 12.3 11.8
AC 9.2 7.9 8 8.6
AM 10.9 11.3 9.2 8.1
RR 11.6 11.8 10.6 10.9
PA 16.7 9.8 11.2 11.9
AP 10.4 12.1 11.9 11.1
TO 8.2 8.5 10.1 9.9
MA 7.5 7.5 7.7 8.5
PI 9.7 8.8 8.5 9.2
CE 8.6 7.7 7.1 7.2
RN 7.5 8.2 8 6.6
PB 8.3 8.9 8.1 8.3
PE 7.9 8.9 9 8.7
AL 8.4 8.8 9.7 10.4
SE 10.2 16.2 14.8 14.1
BA 11.4 12.2 11.8 12.4
MG 12.4 12.1 12.3 13.4
ES 10.3 10.9 14.5 13.7
RJ 18.7 19.4 19.6 18.9
SP 15 13.7 14.4 12.6
PR 11.3 11.5 11.1 11.7
SC 9.1 8.9 9.5 10.4
RS 19 19.6 20 19.9
MS 14.4 15.8 16.5 17.9
MT 8.8 9.4 11.6 17.2
GO 10.5 11.4 13.3 12.2
DF 20.9 13 16.1 18.6
<!DOCTYPE html>
<meta charset="utf-8">
<style>
body {
font: 10px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.bar {
fill: steelblue;
}
.x.axis path {
display: none;
}
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var margin = {top: 20, right: 20, bottom: 30, left: 40},
width = 960 - margin.left - margin.right,
height = 600 - margin.top - margin.bottom;
var x0 = d3.scale.ordinal()
.rangeRoundBands([0, width], .1);
var x1 = d3.scale.ordinal();
var y = d3.scale.linear()
.range([height, 0]);
var color = d3.scale.ordinal()
.range(["#98abc5", "#a05d56", "#d0743c", "#ff8c00"]);
var xAxis = d3.svg.axis()
.scale(x0)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickFormat(d3.format(".2s"));
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 + ")");
d3.csv("data.csv", function(error, data) {
if (error) throw error;
var ageNames = d3.keys(data[0]).filter(function(key) { return key !== "Uf"; });
data.forEach(function(d) {
d.ages = ageNames.map(function(name) { return {name: name, value: +d[name]}; });
});
x0.domain(data.map(function(d) { return d.Uf; }));
x1.domain(ageNames).rangeRoundBands([0, x0.rangeBand()]);
y.domain([0, d3.max(data, function(d) { return d3.max(d.ages, function(d) { return d.value; }); })]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text("Aprovação Ensino Médio");
var state = svg.selectAll(".uf")
.data(data)
.enter().append("g")
.attr("class", "uf")
.attr("transform", function(d) { return "translate(" + x0(d.Uf) + ",0)"; });
state.selectAll("rect")
.data(function(d) { return d.ages; })
.enter().append("rect")
.attr("width", x1.rangeBand())
.attr("x", function(d) { return x1(d.name); })
.attr("y", function(d) { return y(d.value); })
.attr("height", function(d) { return height - y(d.value); })
.style("fill", function(d) { return color(d.name); });
var legend = svg.selectAll(".legend")
.data(ageNames.slice().reverse())
.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", color);
legend.append("text")
.attr("x", width - 24)
.attr("y", 9)
.attr("dy", ".35em")
.style("text-anchor", "end")
.text(function(d) { return d; });
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment