Skip to content

Instantly share code, notes, and snippets.

@emilyw15
Last active October 25, 2017 21:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emilyw15/7b53e34fb3811e0b956af4f2b62a1569 to your computer and use it in GitHub Desktop.
Save emilyw15/7b53e34fb3811e0b956af4f2b62a1569 to your computer and use it in GitHub Desktop.
Avg Ridership in MTA
license: gpl-3.0
Month Metro Light Rail MARC Brunswick MARC Camden MARC Penn CB Baltimore CB Washington
Jan 37667 18225 6539 3669 20978 994 10353
Feb 37428 20202 7084 4110 21515 1181 14049
Mar 34319 22669 6824 4186 21659 1174 13725
Apr 36558 23613 7114 4575 23475 1114 13422
May 36684 20547 7333 4896 23508 1139 13567
Jun 39484 23981 7497 4684 24267 1110 13450
<!DOCTYPE html>
<style>
.axis .domain {
display: none;
}
.tick text {
font-size: 9pt;
font-family: sans-serif;
}
</style>
<title>Oscar Nominated Directors</title>
<svg width="960" height="500"></svg>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script>
var svg = d3.select("svg"),
margin = {top: 20, right: 70, bottom: 110, left: 70},
width = +svg.attr("width") - margin.left - margin.right,
height = +svg.attr("height") - margin.top - margin.bottom,
g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")");
const xAxisG = g.append('g')
.attr('transform', `translate(0, ${height})`);
const yAxisG = g.append('g');
xAxisG.append('text')
.attr('class', 'axis-label')
.attr('x', width / 2)
.attr('y', 60)
.text("Month");
yAxisG.append('text')
.attr('class', 'axis-label')
.attr('x', -height / 2)
.attr('y', -50)
.attr('transform', `rotate(-90)`)
.style('text-anchor', 'middle')
.text("Avg Riders");
var x = d3.scaleBand()
.range([0, width])
.paddingInner(0.05)
.align(0.1);
var y = d3.scaleLinear()
.range([height, 0]);
var z = d3.scaleOrdinal()
.range(["#7fc97f", "#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17"]);
d3.csv("commuter_ridership.csv", function(d, i, columns) {
for (i = 1, t = 0; i < columns.length; ++i) t += d[columns[i]] = +d[columns[i]];
d.total = t;
return d;
}, function(error, data) {
if (error) throw error;
var keys = data.columns.slice(1);
data.sort(function(a, b) { return b.total - a.total; });
x.domain(data.map(function(d) { return d.Month; }));
y.domain([0, d3.max(data, function(d) { return d.total; })]).nice();
z.domain(keys);
const xAxis = d3.axisBottom()
.scale(x)
.tickPadding(15);
const yTicks = 10;
const yAxis = d3.axisLeft()
.scale(y)
.ticks(yTicks)
.tickPadding(15);
g.append("g")
.selectAll("g")
.data(d3.stack().keys(keys)(data))
.enter().append("g")
.attr("fill", function(d) { return z(d.key); })
.selectAll("rect")
.data(function(d) { return d; })
.enter().append("rect")
.attr("x", function(d) { return x(d.data.Month); })
.attr("y", function(d) { return y(d[1]); })
.attr("height", function(d) { return y(d[0]) - y(d[1]); })
.attr("width", x.bandwidth());
g.append("g")
.attr("class", "axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
g.append("g")
.attr("class", "axis")
.call(yAxis);
var legend = g.append("g")
.attr("font-family", "sans-serif")
.attr("font-size", 10)
.attr("text-anchor", "end")
.selectAll("g")
.data(keys.slice().reverse())
.enter().append("g")
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });
legend.append("rect")
.attr("x", width - 19)
.attr("width", 19)
.attr("height", 19)
.attr("fill", z);
legend.append("text")
.attr("x", width - 24)
.attr("y", 9.5)
.attr("dy", "0.32em")
.text(function(d) { return d; });
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment