Skip to content

Instantly share code, notes, and snippets.

@tmcw
Last active November 29, 2021 23:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tmcw/8153742 to your computer and use it in GitHub Desktop.
Save tmcw/8153742 to your computer and use it in GitHub Desktop.
totalseconds totalmeters starttime sport
2678 6164.9 2009-08-30T13:41:31.000Z Running
10656 5781.8 2009-09-01T23:30:02.000Z Running
1191 2601.8 2009-09-03T23:07:43.000Z Running
1949 6424.6 2009-09-05T16:05:28.000Z Running
1136 3526.4 2009-09-08T23:49:29.000Z Running
2011 5447.2 2009-09-12T20:44:12.000Z Running
1408 4445.9 2009-09-16T23:14:56.000Z Running
1051 2530.5 2009-09-19T20:17:36.000Z Running
1583 3666.2 2009-09-19T20:37:32.000Z Running
17162 6574.3 2009-10-04T16:02:12.000Z Running
1106 3308.2 2009-10-13T22:59:21.000Z Running
1352 4367.8 2009-11-01T21:14:31.000Z Running
53383 14070 2009-11-07T21:14:27.000Z Running
1672 4999.2 2010-03-13T18:49:09.000Z Running
1951 5554.7 2010-03-16T23:06:20.000Z Running
2228 5870.9 2010-03-20T19:40:34.000Z Running
1819 5156.1 2010-03-21T18:25:48.000Z Running
1823 5322 2010-04-04T17:20:00.000Z Running
2214 4819 2010-04-10T21:23:15.000Z Running
831 3091.2 2010-04-19T11:49:12.000Z Running
2339 7124.6 2010-04-25T16:08:15.000Z Running
59 201.1 2010-06-21T22:00:33.000Z Running
1264 3877.8 2010-06-22T23:35:25.000Z Running
1597 5158 2010-06-29T11:12:19.000Z Running
1165 3713.9 2010-07-02T11:13:35.000Z Running
3975 10422.4 2010-07-03T13:16:17.000Z Running
1541 4489.8 2010-07-15T00:14:22.000Z Running
1164 0 2010-07-20T23:56:42.000Z Running
173 587.6 2010-07-27T23:09:38.000Z Running
1427 4511.1 2010-08-10T23:54:47.000Z Running
1826 5712.8 2010-09-13T22:48:15.000Z Running
2963 7708.4 2010-10-17T17:26:30.000Z Running
1327 4017 2011-02-09T00:20:20.000Z Running
2354 7116.3 2011-02-13T16:49:55.000Z Running
1605 5682.1 2011-02-18T02:39:06.000Z Running
2902 8530.9 2011-02-19T22:03:42.000Z Running
1548 5029.2 2011-02-27T21:12:43.000Z Running
1550 5200.7 2011-03-27T18:35:27.000Z Running
2131 5680.6 2011-04-15T22:47:46.000Z Running
1385 4755.7 2011-04-17T16:47:39.000Z Running
2144 6562.8 2011-04-20T17:34:37.000Z Running
4122 9995.4 2011-04-30T18:16:06.000Z Running
981 2995.4 2011-05-15T20:53:28.000Z Running
1197 3735.9 2011-06-26T23:43:57.000Z Running
2316 6503.5 2011-06-30T22:15:26.000Z Running
1366 4008.3 2011-07-02T21:15:20.000Z Running
2010 5128.1 2011-07-14T23:59:21.000Z Running
1202 3690 2011-07-15T23:28:01.000Z Running
268064 795.4 2011-07-17T22:00:18.000Z Running
1392 4806.7 2011-07-21T00:28:12.000Z Running
3385 4797.3 2011-07-24T23:05:21.000Z Running
1545 4293.6 2011-07-26T23:45:40.000Z Running
1047 3204.7 2011-07-29T00:18:07.000Z Running
833 2387.432205515763 2011-08-03T22:20:32.000Z Running
837 2395.8 2011-08-03T22:23:33.000Z Running
1417 3826 2011-09-04T22:10:17.000Z Running
1544 4256 2011-12-03T19:21:01.000Z Running
1645 4908.2 2011-12-06T01:28:10.000Z Running
1786 4220.2 2011-12-31T22:02:01.000Z Running
380113 3875.5 2012-02-01T13:02:49.000Z Running
373093 3539.2 2012-02-07T12:21:58.000Z Running
3597 9793.4 2012-03-11T20:58:50.000Z Running
1344 3255.3 2012-03-13T22:26:24.000Z Running
1597 4464.1 2012-03-15T23:24:31.000Z Running
1383 3825 2012-03-21T22:56:19.000Z Running
2862 8576.9 2012-04-02T14:25:19.000Z Running
2238 4302.7 2012-04-04T16:07:08.000Z Running
6809 14503.3 2012-04-14T17:25:19.000Z Running
1289 4076.3 2012-04-15T19:02:10.000Z Running
2804 8735 2012-04-17T23:38:32.000Z Running
4330 10534 2012-04-21T20:54:03.000Z Running
441 1453.8 2012-04-23T23:12:40.000Z Running
4112 8676.8 2012-04-24T22:53:13.000Z Running
3711 8344.9 2012-04-26T23:16:31.000Z Running
2565 6992.2 2012-04-28T19:19:07.000Z Running
2247 6099.7 2012-04-30T22:29:02.000Z Running
4623 5883.9 2012-05-03T22:48:41.000Z Running
1160 3023.7 2012-05-04T23:48:38.000Z Running
6457 21219.4 2012-05-06T11:02:11.000Z Running
2079 4300.6 2012-05-08T23:03:55.000Z Running
1472 3185.3 2012-05-12T19:43:18.000Z Running
1542 4529.8 2012-05-16T23:30:26.000Z Running
1377 3301.8 2012-05-20T16:01:06.000Z Running
2378 6567.7 2012-05-22T23:42:08.000Z Running
2397 5209.2 2012-05-24T23:48:02.000Z Running
1419 2697.1 2012-05-26T23:09:10.000Z Running
5174 4543.4 2012-05-28T18:43:56.000Z Running
3103 7351.7 2012-05-31T23:25:07.000Z Running
2734 6890.6 2012-06-02T23:26:48.000Z Running
3395 7032.6 2012-06-07T23:26:09.000Z Running
1584 1057.1 2012-06-08T23:29:40.000Z Running
3217 8773.5 2012-06-09T22:36:09.000Z Running
6704 7537.5 2012-06-23T21:11:04.000Z Running
1563 3618.6 2012-06-29T00:12:10.000Z Running
1113 3658.3 2012-07-06T11:23:31.000Z Biking
2311 5721.97 2012-07-11T22:39:55.000Z Biking
2729 6612.13 2012-07-30T23:00:35.000Z Biking
2717 5474.81 2012-08-05T13:54:54.000Z Biking
1968 5862.75 2012-08-10T22:14:59.000Z Biking
1695 5845.61 2012-08-12T23:48:18.000Z Biking
1301 3992.57 2012-08-13T22:23:31.000Z Biking
2653 5622.31 2012-08-15T22:54:29.000Z Biking
1002 3476.27 2012-08-16T23:34:01.000Z Biking
4504 10803.3 2012-08-18T22:10:23.000Z Running
4203 10803.1 2012-08-18T22:15:23.000Z Running
2808 5260.54 2012-08-23T22:59:47.000Z Biking
3699 8819.66 2012-08-25T14:56:49.000Z Biking
8072 7978.81 2012-08-28T22:54:57.000Z Biking
2357 3731.49 2012-08-31T22:24:44.000Z Biking
2554 8049 2012-09-06T22:52:48.000Z Biking
3221 7330.77 2012-09-10T22:24:08.000Z Biking
1291 3995.5 2012-09-13T23:13:34.000Z Biking
1542 3477.3475753102316 2012-09-24T20:19:46.000Z Running
2180 3566.6549999999997 2012-09-24T20:27:51.000Z Biking
5548 12742.6 2012-09-27T20:38:48.000Z Biking
1993 4986.92 2012-09-28T19:16:15.000Z Biking
2451 5407.76 2012-09-30T21:28:12.000Z Biking
262866 7769.73 2012-10-02T22:12:31.000Z Biking
1810 4830.02 2012-10-05T23:13:47.000Z Biking
2543 10061.4 2012-10-07T12:03:04.000Z Running
1560 3490.23 2012-10-23T22:34:40.000Z Biking
1358 2879.47 2012-10-24T23:22:51.000Z Biking
342 1611.5 2013-03-26T13:49:37.000Z Biking
1186 3785.9 2013-03-28T11:55:24.000Z Running
1252 4026.9 2013-03-30T14:41:01.000Z Running
2093 5646.6 2013-03-31T14:48:49.000Z Running
1860 5815 2013-04-02T23:23:54.000Z Running
990 3625.4 2013-04-06T22:00:41.000Z Running
753 1915.8 2013-04-06T22:27:45.000Z Running
1616 4088.4 2013-04-07T13:45:54.000Z Running
1169 3466.1 2013-04-13T14:42:08.000Z Running
1898 5641.7 2013-04-20T13:28:00.000Z Running
1372 4000 2013-05-05T22:10:31.000Z Running
996 3222.3 2013-05-05T22:33:36.000Z Running
1762 5797.1 2013-05-07T23:00:40.000Z Running
1510 4988 2013-05-09T23:14:02.000Z Running
2055 6444 2013-05-10T23:26:37.000Z Running
2172 6847.2 2013-05-12T22:46:10.000Z Running
5962 14959.1 2013-05-12T15:18:21.000Z Biking
2418 6847.9 2013-05-25T19:10:58.000Z Running
1017 2985.5 2013-05-26T21:32:25.000Z Running
6024 32896.5 2013-05-27T14:21:22.000Z Biking
6065 32427.7 2013-05-27T17:04:17.000Z Biking
1977 6077.1 2013-05-29T11:37:34.000Z Running
2070 6451.8 2013-05-31T11:15:40.000Z Running
1268 4017.8 2013-06-02T14:34:35.000Z Running
1377 4327.8 2013-06-03T23:19:28.000Z Running
3152 9984.3 2013-06-04T23:07:03.000Z Running
2282 5979.9 2013-06-07T23:23:25.000Z Running
1211 4094.8 2013-06-15T00:29:05.000Z Running
2313 7240.9 2013-06-16T15:05:49.000Z Running
2027 6521.2 2013-06-19T12:00:10.000Z Running
2010 5965.5 2013-06-20T23:14:35.000Z Running
1288 4257.9 2013-06-22T18:07:59.000Z Running
1774 5470.6 2013-06-26T12:04:14.000Z Running
2147 6445.2 2013-06-29T20:00:24.000Z Running
909 3262.9 2013-07-01T11:31:35.000Z Running
1868 5635.5 2013-07-04T18:41:14.000Z Running
1716 5211 2013-07-15T12:01:54.000Z Running
1350 4435.8 2013-07-21T14:43:01.000Z Running
1900 6450.3 2013-07-24T23:37:48.000Z Running
1707 5618.5 2013-07-25T22:53:17.000Z Running
2096 6689.8 2013-07-29T22:59:55.000Z Running
3218 9672.4 2013-07-30T23:02:01.000Z Running
1107 4108.4 2013-07-31T23:10:23.000Z Running
2334 4798.5 2013-08-03T17:37:44.000Z Running
2662 7551 2013-08-04T13:58:07.000Z Running
1898 5557.5 2013-08-04T14:44:49.000Z Running
2105 6839.5 2013-08-07T01:00:59.000Z Running
2586 8097.2 2013-08-07T23:04:05.000Z Running
2878 9257.7 2013-08-10T23:31:27.000Z Running
1238 4060.4 2013-08-11T20:26:43.000Z Running
3183 9662.9 2013-08-14T23:27:19.000Z Running
3271 6978 2013-08-17T17:32:12.000Z Running
540 1616.8 2013-08-17T18:33:03.000Z Running
835 3137.9 2013-08-18T19:42:51.000Z Running
1142 3695.3 2013-08-18T19:59:27.000Z Running
1926 6448.4 2013-08-20T00:13:55.000Z Running
2723 8449.2 2013-08-23T23:35:25.000Z Running
3827 11275.2 2013-08-25T19:09:32.000Z Running
2600 6930.9 2013-08-26T23:28:28.000Z Running
2578 6447.5 2013-09-01T18:56:04.000Z Running
2180 6228.7 2013-09-05T23:41:16.000Z Running
329 1002.8 2013-09-09T23:18:50.000Z Running
2365 6465.8 2013-09-09T23:25:11.000Z Running
2044 6735.1 2013-09-13T23:40:50.000Z Running
3052 7350.1 2013-09-18T01:22:15.000Z Running
1485 4741.2 2013-09-21T15:24:12.000Z Running
3442 8530.4 2013-09-23T22:52:23.000Z Running
1375 4350.6 2013-09-24T11:55:42.000Z Running
1891 5807.1 2013-09-26T12:42:28.000Z Running
917 3831.5 2013-09-29T12:58:20.000Z Running
264 1148.6 2013-09-29T13:14:20.000Z Running
1793 5314.1 2013-10-04T12:02:15.000Z Running
2055 6495.8 2013-10-05T23:08:01.000Z Running
5689 9771.9 2013-10-08T01:04:04.000Z Running
1548 4282.1 2013-10-12T19:13:35.000Z Running
2283 7543.2 2013-10-14T23:11:59.000Z Running
2619 6930.6 2013-10-15T22:39:58.000Z Running
4388 15283.2 2013-10-16T21:31:19.000Z Biking
3707 11274.4 2013-10-19T14:33:09.000Z Running
1197 4038.6 2013-10-21T22:49:33.000Z Running
1145 2879.1 2013-10-28T23:58:55.000Z Running
1553 4091.7 2013-10-28T23:19:44.000Z Running
386 1222.5 2013-10-29T00:38:48.000Z Running
1236 4162.4 2013-11-02T19:25:29.000Z Running
2495 10040.4 2013-11-03T13:01:47.000Z Running
3125 10028.7 2013-11-09T18:26:04.000Z Running
3078 4823.2 2013-11-10T19:50:16.000Z Running
3485 11342.2 2013-11-15T16:29:18.000Z Running
1768 4834.2 2013-11-16T20:13:06.000Z Running
1694 5767.4 2013-11-20T00:31:32.000Z Running
2626 8048.1 2013-11-28T17:51:34.000Z Running
1911 6510.3 2013-12-02T15:55:01.000Z Running
3823 6605.4 2013-12-06T00:12:22.000Z Running
1979 8047.7 2013-12-08T14:00:17.000Z Running
1883 6467.237198504713 2013-12-14T00:20:52.000Z Running
2067 6177.69211594368 2013-12-21T20:36:31.000Z Running
1649 5675.1766187680205 2013-12-22T21:19:09.000Z Running
1213 4051.1 2013-12-26T21:08:46.000Z Running
<html>
<head>
<meta charset="utf-8">
<title>runs over time</title>
<style>
body { margin: 0; padding: 0; background:#f8f8f8; }
svg {
font: 10px sans-serif;
}
path {
stroke: steelblue;
stroke-width: 2;
fill: none;
}
.line {
fill: none;
stroke: #000;
stroke-width: 1.5px;
}
.area {
stroke-width:0;
fill-opacity:0.1;
}
.year {
text-anchor:end;
}
.axis path, .axis line {
fill: none;
stroke: #eee;
shape-rendering: crispEdges;
}
</style>
</head>
<body>
<script src="https://d3js.org/d3.v3.js"></script>
<script src="vis.js"></script>
</body>
d3.csv('distance.csv', function(out) {
out = out.filter(function(o) {
return o.sport === 'Running';
}).map(function(o) {
o.distance = +o.totalmeters;
o.totalseconds = +o.totalseconds;
o.date = new Date(o.starttime);
return o;
});
var margin = {top: 20, right: 10, bottom: 20, left: 10},
width = 640 - margin.left - margin.right,
height = 400 - margin.top - margin.bottom;
var formatNumber = d3.format("d");
var y = d3.scale.linear()
.domain([0, 400])
.range([height, 0]);
var x = d3.time.scale()
.domain([new Date(2010, 0, 1), new Date(2011, 0, 1)])
.range([0, width]);
var xAxis = d3.svg.axis()
.scale(x)
.ticks(d3.time.months)
.tickFormat(d3.time.format("%b"))
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.tickSize(width)
.ticks(4)
.tickFormat(formatMiles)
.orient("right");
var years = d3.nest()
.key(function(d) {
return d.date.getFullYear();
})
.entries(out);
for (var yr in years) {
var total = 0;
years[yr].values = years[yr].values.sort(function(a, b) {
return a.date - b.date;
}).map(function(k) {
total += (k.distance * 0.000621371);
k.total = total;
return k;
});
}
var color = d3.scale.category10();
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 + ")");
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
var gy = svg.append("g")
.attr("class", "y axis")
.call(yAxis);
gy.selectAll("g").filter(function(d) { return d; })
.classed("minor", true);
gy.selectAll("text")
.attr("x", 4)
.attr("dy", -4);
var line = d3.svg.line()
.x(function(d) {
var year_normal = d.date.setYear(2010);
return x(year_normal);
})
.y(function(d) {
return y(d.total);
});
var area = d3.svg.area()
.x(function(d) {
var year_normal = d.date.setYear(2010);
return x(year_normal);
})
.y0(height)
.y1(function(d) {
return y(d.total);
});
svg.selectAll('path.line')
.data(years)
.enter()
.append("path")
.style("stroke", function(d) { return color(d.key); })
.attr("class", "line")
.attr("d", function(d) {
return line(d.values);
});
svg.selectAll('path.area')
.data(years)
.enter()
.append("path")
.style("fill", function(d) { return color(d.key); })
.attr("class", "area")
.attr("d", function(d) {
return area(d.values);
});
svg.selectAll('text.year')
.data(years)
.enter()
.append("text")
.style("fill", function(d) { return color(d.key); })
.attr("class", "year")
.attr('dx', -5)
.attr('dy', -5)
.attr("transform", function(d) {
var last = d.values[d.values.length - 1];
var year_normal = last.date.setYear(2010);
return 'translate(' + x(year_normal) + ',' +
y(last.total) + ')';
})
.text(function(d) {
return d.key;
});
function formatMiles(d) {
return formatNumber(d) + 'mi';
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment