Skip to content

Instantly share code, notes, and snippets.

@cflavs
Created May 8, 2016 23:18
Show Gist options
  • Save cflavs/50190ccf0b78936a7b3037a3e7415b61 to your computer and use it in GitHub Desktop.
Save cflavs/50190ccf0b78936a7b3037a3e7415b61 to your computer and use it in GitHub Desktop.
Taxa de Aprovação EM Versão Final
<!DOCTYPE html>
<meta charset="utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<style>
body {
font: 10px sans-serif;
}
.bar rect {
fill: steelblue;
}
.bar text.value {
fill: white;
}
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-family: sans-serif;
font-size: 11px;
}
.y.axis path,
.y.axis line {
opacity: 0;
}
</style>
<body>
<div>
<button type="button" class="btn btn-warning" id = "ano2009">2007</button>
<button type="button" class="btn btn-warning" id="propertyCategory">2008</button>
<button type="button" class="btn btn-warning" id="vacant">2009</button>
<button type="button" class="btn btn-warning" id="totalUnits">2010</button>
</div>
<script type="text/javascript">
var width = 560;
var height = 530;
var m = [30, 10, 10, 120],
w = width - m[1] - m[3],
h = height - m[0] - m[2];
var data;
var bar;
var format = d3.format("2.%");
var x = d3.scale.linear().range([0, w]),
y = d3.scale.ordinal().rangeRoundBands([0, h], .1);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var svg = d3.select("body").append("svg")
.attr("width", w + m[1] + m[3])
.attr("height", h + m[0] + m[2])
.append("g")
.attr("transform", "translate(" + m[3] + "," + m[0] + ")");
function dashboard(data) {
// Parse numbers, and sort by value.
data.forEach(function(d) { d.ano2009 = +d.ano2009; });
// data.sort(function(a, b) { return b.ano2009 - a.ano2009; });
dataset=data;
// Set the scale domain.
x.domain([0, d3.max(data, function(d) { return d.ano2009; })]);
y.domain(data.map(function(d) { return d.propertyName; }));
bar = svg.selectAll("g.bar")
.data(data)
.enter().append("g")
.attr("class", "bar")
.attr("transform", function(d) { return "translate(0," + y(d.propertyName) + ")"; });
bar.append("rect")
.attr("height", y.rangeBand())
.attr("width", 30)
.transition()
.duration(800)
.attr("width", function(d) { return x(d.ano2009); })
bar.append("text")
.attr("class", "value")
.attr("x", function(d) { return x(d.ano2009); })
.attr("y", y.rangeBand() / 2)
.attr("dx", -3)
.attr("dy", ".35em")
.attr("text-anchor", "end")
.text(function(d) { return format(d.ano2009); });
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(" + m[1] + "," + (height - m[1]) + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
}
d3.select("#propertyCategory")
.on("click", function() {
//Update scale domain
x.domain([ 0, d3.max(dataset, function(d) {
return +d.propertyCategory;
}) ]);
svg.selectAll('rect')
.data(dataset)
.transition()
.duration(1000)
.attr("width", function(d) {
return x(d.propertyCategory);
})
svg.selectAll("text")
.data(dataset)
.transition()
.duration(1000)
.attr("x", function(d) { return x(d.propertyCategory); })
.attr("y", y.rangeBand() / 2)
.attr("text-anchor", "end")
.text(function(d) { return format(d.propertyCategory); });
//Update axis
d3.select(".x.axis")
.transition()
.call(xAxis);
//Update axis
d3.select(".y.axis")
.transition()
.call(yAxis);
});
d3.select("#vacant")
.on("click", function() {
//Update scale domain
x.domain([ 0, d3.max(dataset, function(d) {
return +d.vacant;
}) ]);
svg.selectAll('rect')
.data(dataset)
.transition()
.duration(1000)
.attr("width", function(d) {
return x(d.vacant);
})
svg.selectAll("text")
.data(dataset)
.transition()
.duration(1000)
.attr("x", function(d) { return x(d.vacant); })
.attr("y", y.rangeBand() / 2)
.attr("text-anchor", "end")
.text(function(d) { return format(d.vacant); });
//Update axis
d3.select(".x.axis")
.transition()
.call(xAxis);
//Update axis
d3.select(".y.axis")
.transition()
.call(yAxis);
});
d3.select("#totalUnits")
.on("click", function() {
//Update scale domain
x.domain([ 0, d3.max(dataset, function(d) {
return +d.totalUnits;
}) ]);
svg.selectAll('rect')
.data(dataset)
.transition()
.duration(1000)
.attr("width", function(d) {
return x(d.totalUnits);
})
svg.selectAll("text")
.data(dataset)
.transition()
.duration(1000)
.attr("x", function(d) { return x(d.totalUnits); })
.attr("y", y.rangeBand() / 2)
.attr("text-anchor", "end")
.text(function(d) { return format(d.totalUnits); });
//Update axis
d3.select(".x.axis")
.transition()
.call(xAxis);
//Update axis
d3.select(".y.axis")
.transition()
.call(yAxis);
});
d3.select("#ano2009")
.on("click", function() {
//Update scale domain
x.domain([ 0, d3.max(dataset, function(d) {
return +d.ano2009;
}) ]);
svg.selectAll('rect')
.data(dataset)
.transition()
.duration(1000)
.attr("width", function(d) {
return x(d.ano2009);
})
svg.selectAll("text")
.data(dataset)
.transition()
.duration(1000)
.attr("x", function(d) { return x(d.ano2009); })
.attr("y", y.rangeBand() / 2)
.attr("text-anchor", "end")
.text(function(d) { return format(d.ano2009); });
//Update axis
d3.select(".x.axis")
.transition()
.call(xAxis);
//Update axis
d3.select(".y.axis")
.transition()
.call(yAxis);
});
</script>
<script>
var freqData=[
{propertyName:'Acre',ano2009:75.90,propertyCategory:77.80,vacant: 79.20,totalUnits:78.90}
,{propertyName:'Alagoas',ano2009:71.70,propertyCategory:74.20,vacant: 71.10,totalUnits:71.80}
,{propertyName:'Amazonas',ano2009:77.90,propertyCategory:74.60,vacant:71.40,totalUnits:81.70}
,{propertyName:'Amapá',ano2009:70.00,propertyCategory:69.50,vacant: 70.60,totalUnits:73.60}
,{propertyName:'Bahia',ano2009:68.70,propertyCategory:68.00,vacant: 69.70,totalUnits:71.90}
,{propertyName:'Ceará',ano2009:76.70,propertyCategory:78.50,vacant: 79.90,totalUnits:82.20}
,{propertyName:'Distrito Federal',ano2009:71.10,propertyCategory:82.00,vacant: 76.60,totalUnits:74.80}
,{propertyName:'Espírito Santo',ano2009:77.20,propertyCategory:77.60,vacant:74.80,totalUnits:79.30}
,{propertyName:'Goiás',ano2009:73.60,propertyCategory:73.50,vacant: 74.70,totalUnits:76.10}
,{propertyName:'Maranhão',ano2009:75.00,propertyCategory:76.30,vacant: 78.50,totalUnits:76.80}
,{propertyName:'Minas Gerais',ano2009:75.60,propertyCategory:76.90,vacant: 78.40,totalUnits:77.80}
,{propertyName:'Mato Grosso do Sul',ano2009:72.90,propertyCategory:72.30,vacant: 71.70,totalUnits:71.10}
,{propertyName:'Mato Grosso',ano2009:73.30,propertyCategory:71.20,vacant: 72.60,totalUnits:71.60}
,{propertyName:'Pará',ano2009:63.30,propertyCategory:68.20,vacant: 68.10,totalUnits:68.90}
,{propertyName:'Paraíba',ano2009:72.80,propertyCategory:72.30,vacant: 74.10,totalUnits:74.30}
,{propertyName:'Pernambuco',ano2009:70.10,propertyCategory:73.10,vacant: 77.00,totalUnits:80.20}
,{propertyName:'Piauí',ano2009:70.60,propertyCategory:69.00,vacant: 71.30,totalUnits:74.10}
,{propertyName:'Paraná',ano2009:79.70,propertyCategory:78.20,vacant: 80.60,totalUnits:81.60}
,{propertyName:'Rio de Janeiro',ano2009:67.30,propertyCategory:65.80,vacant: 66.60,totalUnits:68.30}
,{propertyName:'Rio Grande do Norte',ano2009:68.30,propertyCategory:68.10,vacant: 71.10,totalUnits:76.10}
,{propertyName:'Rondônia',ano2009:74.40,propertyCategory:75.20,vacant: 76.10,totalUnits:76.70}
,{propertyName:'Roraima',ano2009:79.50,propertyCategory:79.50,vacant: 81.60,totalUnits:82.20}
,{propertyName:'Rio Grande do Sul',ano2009:68.00,propertyCategory:68.00,vacant: 68.30,totalUnits:69.10}
,{propertyName:'Santa Catarina',ano2009:83.80,propertyCategory:83.80,vacant: 83.70,totalUnits:82.50}
,{propertyName:'Seará',ano2009:71.50,propertyCategory:65.40,vacant: 69.00,totalUnits:70.40}
,{propertyName:'São Paulo',ano2009:79.80,propertyCategory:82.00,vacant: 81.70,totalUnits:82.90}
,{propertyName:'Tocantis',ano2009:80.1,propertyCategory:80.20,vacant: 81.20,totalUnits:82.10}
];
dashboard(freqData);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment