Skip to content

Instantly share code, notes, and snippets.

@mbostock
Last active January 8, 2024 23:41
  • Star 6 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save mbostock/5544008 to your computer and use it in GitHub Desktop.
Marey’s Trains
license: gpl-3.0
redirect: https://observablehq.com/@mbostock/mareys-trains

A recreation of E.J. Marey’s graphical train schedule. Stations are separated vertically in proportion to geography; thus, the slope of the line reflects the speed of the train: the steeper the line, the faster the train. This display also reveals when and where limited service trains (in orange) are passed by baby bullets (in red). This type of plot is sometimes called a “stringline chart”.

See also the earlier Protovis version by Vadim Ogievetsky, and another variation where color encodes speed.

<!DOCTYPE html>
<meta charset="utf-8">
<style>
svg {
font: 10px sans-serif;
}
.axis path {
display: none;
}
.axis line {
stroke: #000;
shape-rendering: crispEdges;
}
.station line {
stroke: #ddd;
stroke-dasharray: 1,1;
shape-rendering: crispEdges;
}
.station text {
text-anchor: end;
}
.train path {
fill: none;
stroke-width: 1.5px;
}
.train circle {
stroke: #fff;
}
.train .N path { stroke: rgb(34,34,34); }
.train .N circle { fill: rgb(34,34,34); }
.train .L path { stroke: rgb(183,116,9); }
.train .L circle { fill: rgb(183,116,9); }
.train .B path { stroke: rgb(192,62,29); }
.train .B circle { fill: rgb(192,62,29); }
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var stations = []; // lazily loaded
var formatTime = d3.time.format("%I:%M%p");
var margin = {top: 20, right: 30, bottom: 20, left: 100},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var x = d3.time.scale()
.domain([parseTime("5:30AM"), parseTime("11:30AM")])
.range([0, width]);
var y = d3.scale.linear()
.range([0, height]);
var xAxis = d3.svg.axis()
.scale(x)
.ticks(8)
.tickFormat(formatTime);
var line = d3.svg.line()
.x(function(d) { return x(d.time); })
.y(function(d) { return y(d.station.distance); });
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("defs").append("clipPath")
.attr("id", "clip")
.append("rect")
.attr("y", -margin.top)
.attr("width", width)
.attr("height", height + margin.top + margin.bottom);
d3.tsv("schedule.tsv", type, function(error, trains) {
y.domain(d3.extent(stations, function(d) { return d.distance; }));
var station = svg.append("g")
.attr("class", "station")
.selectAll("g")
.data(stations)
.enter().append("g")
.attr("transform", function(d) { return "translate(0," + y(d.distance) + ")"; });
station.append("text")
.attr("x", -6)
.attr("dy", ".35em")
.text(function(d) { return d.name; });
station.append("line")
.attr("x2", width);
svg.append("g")
.attr("class", "x top axis")
.call(xAxis.orient("top"));
svg.append("g")
.attr("class", "x bottom axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis.orient("bottom"));
var train = svg.append("g")
.attr("class", "train")
.attr("clip-path", "url(#clip)")
.selectAll("g")
.data(trains.filter(function(d) { return /[NLB]/.test(d.type); }))
.enter().append("g")
.attr("class", function(d) { return d.type; });
train.append("path")
.attr("d", function(d) { return line(d.stops); });
train.selectAll("circle")
.data(function(d) { return d.stops; })
.enter().append("circle")
.attr("transform", function(d) { return "translate(" + x(d.time) + "," + y(d.station.distance) + ")"; })
.attr("r", 2);
});
function type(d, i) {
// Extract the stations from the "stop|*" columns.
if (!i) for (var k in d) {
if (/^stop\|/.test(k)) {
var p = k.split("|");
stations.push({
key: k,
name: p[1],
distance: +p[2],
zone: +p[3]
});
}
}
return {
number: d.number,
type: d.type,
direction: d.direction,
stops: stations
.map(function(s) { return {station: s, time: parseTime(d[s.key])}; })
.filter(function(s) { return s.time != null; })
};
}
function parseTime(s) {
var t = formatTime.parse(s);
if (t != null && t.getHours() < 3) t.setDate(t.getDate() + 1);
return t;
}
</script>
number type direction stop|San Francisco|0|1 stop|22nd Street|40|1 stop|Bayshore|124|1 stop|So. San Francisco|178|1 stop|San Bruno|216|1 stop|Millbrae|249|2 stop|Broadway|280|2 stop|Burlingame|307|2 stop|San Mateo|334|2 stop|Hayward Park|354|2 stop|Hillsdale|391|2 stop|Belmont|428|2 stop|San Carlos|458|2 stop|Redwood City|499|2 stop|Atherton|543|3 stop|Menlo Park|574|3 stop|Palo Alto|604|3 stop|California Ave|649|3 stop|San Antonio|676|3 stop|Mountain View|702|3 stop|Sunnyvale|731|3 stop|Lawrence|757|4 stop|Santa Clara|805|4 stop|College Park|833|4 stop|San Jose|862|4 stop|Tamien|906|4 stop|Capitol|939|5 stop|Blossom Hill|966|5 stop|Morgan Hill|997|6 stop|San Martin|1021|6 stop|Gilroy|1053|6
102 N S 4:55am 5:00am 5:05am 5:11am 5:15am 5:19am - 5:23am 5:26am 5:29am 5:32am 5:35am 5:38am 5:43am - 5:48am 5:51am 5:55am 5:59am 6:03am 6:08am 6:12am 6:17am - 6:26am X X X X X X
104 N S 5:25am 5:30am 5:35am 5:41am 5:45am 5:49am - 5:53am 5:56am 5:59am 6:02am 6:05am 6:08am 6:13am - 6:18am 6:21am 6:25am 6:29am 6:33am 6:38am 6:42am 6:47am - 6:56am 7:03am X X X X X
206 L S 6:11am 6:16am - - - 6:29am - 6:33am 6:36am - 6:40am - 6:44am 6:49am - 6:54am 6:57am 7:01am - 7:07am - 7:12am - - 7:24am X X X X X X
208 L S 6:24am 6:29am 6:34am 6:40am 6:44am 6:48am - 6:52am 6:55am 6:58am 7:01am 7:04am i7:07am i7:12am - - 7:18am - - - - - 7:34am - 7:43am 7:50am X X X X X
210 L S 6:44am 6:49am - - - 7:01am - - 7:07am - - - i7:13am i7:18am - 7:23am 7:26am 7:30am 7:34am 7:38am 7:43am 7:49am 7:56am 7:59am 8:06am 8:13am X X X X X
312 B S 6:59am 7:04am - - - 7:17am - - - - - - - 7:30am - 7:35am - - - 7:44am - - - - 7:58am X X X X X X
314 B S 7:14am 7:19am - - - 7:32am - - - - 7:40am - - - - - 7:51am - - 7:58am - - - - 8:13am X X X X X X
216 L S 7:19am - - - 7:33am - - 7:38am 7:42am - 7:46am - 7:50am - - 7:58am 8:01am - - 8:09am - 8:16am - - 8:28am X X X X X X
218 L S 7:24am 7:29am 7:34am 7:40am 7:44am 7:48am - 7:52am 7:55am 7:58am 8:01am 8:04am i8:07am i8:12am - - 8:18am - - - - - 8:34am - 8:43am 8:50am X X X X X
220 L S 7:44am 7:49am - - - 8:01am - - 8:07am - - - i8:13am i8:18am - 8:23am 8:26am 8:30am 8:34am 8:38am 8:43am 8:49am 8:56am - 9:05am 9:12am X X X X X
322 B S 7:59am 8:04am - - - 8:17am - - - - - - - 8:30am - 8:35am - - - 8:44am - - - - 8:58am X X X X X X
324 B S 8:14am 8:19am - - - 8:32am - - - - 8:40am - - - - - 8:51am - - 8:58am - - - - 9:13am X X X X X X
226 L S 8:19am - - - 8:33am - - 8:38am 8:42am - 8:46am - 8:50am - - 8:58am 9:01am - - 9:09am - 9:16am - - 9:28am X X X X X X
228 L S 8:24am 8:29am 8:34am 8:40am 8:44am 8:48am - 8:52am 8:55am 8:58am 9:01am 9:04am i9:07am i9:12am - - 9:18am - - - - - 9:34am - 9:43am 9:50am X X X X X
230 L S 8:44am 8:49am - - - 9:01am - - 9:07am - - - i9:13am i9:18am - 9:23am 9:26am 9:30am 9:34am 9:38am 9:43am 9:49am 9:56am - 10:05am 10:12am X X X X X
332 B S 8:59am 9:04am - - - 9:17am - - - - - - - 9:30am - 9:35am - - - 9:44am - - - - 9:58am X X X X X X
134 N S 9:07am 9:12am 9:17am 9:23am 9:27am 9:31am - 9:35am 9:38am 9:41am 9:44am 9:47am 9:50am 9:55am - 10:00am 10:03am 10:07am 10:11am 10:15am 10:20am 10:24am 10:29am - 10:38am X X X X X X
236 L S 9:37am - - - 9:51am 9:55am - 9:59am 10:02am - 10:06am 10:09am 10:12am 10:17am - 10:22am 10:25am 10:29am 10:33am 10:37am 10:42am 10:46am 10:51am - 11:00am 11:07am X X X X X
138 N S 10:07am 10:12am 10:17am 10:23am 10:27am 10:31am - 10:35am 10:38am 10:41am 10:44am 10:47am 10:50am 10:55am - 11:00am 11:03am 11:07am 11:11am 11:15am 11:20am 11:24am 11:29am - 11:38am X X X X X X
142 N S 11:07am 11:12am 11:17am 11:23am 11:27am 11:31am - 11:35am 11:38am 11:41am 11:44am 11:47am 11:50am 11:55am - 12:00pm 12:03pm 12:07pm 12:11pm 12:15pm 12:20pm 12:24pm 12:29pm - 12:38pm X X X X X X
146 N S 12:07pm 12:12pm 12:17pm 12:23pm 12:27pm 12:31pm - 12:35pm 12:38pm 12:41pm 12:44pm 12:47pm 12:50pm 12:55pm - 1:00pm 1:03pm 1:07pm 1:11pm 1:15pm 1:20pm 1:24pm 1:29pm - 1:38pm X X X X X X
150 N S 1:07pm 1:12pm 1:17pm 1:23pm 1:27pm 1:31pm - 1:35pm 1:38pm 1:41pm 1:44pm 1:47pm 1:50pm 1:55pm - 2:00pm 2:03pm 2:07pm 2:11pm 2:15pm 2:20pm 2:24pm 2:29pm - 2:38pm X X X X X X
154 N S 2:07pm 2:12pm 2:17pm 2:23pm 2:27pm 2:31pm - 2:35pm 2:38pm 2:41pm 2:44pm 2:47pm 2:50pm 2:55pm - 3:00pm 3:03pm 3:07pm 3:11pm 3:15pm 3:20pm 3:24pm 3:29pm - 3:38pm X X X X X X
256 L S 2:37pm - - - 2:51pm 2:55pm - 2:59pm 3:02pm - 3:06pm 3:09pm 3:12pm 3:17pm - 3:22pm 3:25pm 3:29pm 3:33pm 3:37pm 3:42pm 3:46pm 3:51pm - 4:00pm 4:07pm X X X X X
158 N S 3:07pm 3:12pm 3:17pm 3:23pm 3:27pm 3:31pm - 3:35pm 3:38pm 3:41pm 3:44pm 3:47pm 3:50pm 3:55pm - 4:00pm 4:03pm 4:07pm 4:11pm 4:15pm 4:20pm 4:24pm 4:29pm 4:32pm 4:39pm 4:45pm 4:52pm 4:58pm 5:11pm 5:17pm 5:30pm
260 L S 3:37pm - - - 3:51pm 3:55pm - 3:59pm 4:02pm - 4:06pm 4:09pm 4:12pm 4:17pm - 4:22pm 4:25pm 4:29pm 4:33pm 4:37pm 4:42pm 4:46pm 4:51pm - 5:00pm 5:07pm X X X X X
362 B S 4:09pm - - - - 4:25pm - - - - 4:33pm - - - - - 4:44pm - - 4:51pm - - - - 5:06pm X X X X X X
264 L S 4:19pm - - - 4:33pm - - 4:38pm 4:42pm - 4:47pm - 4:51pm - - - 5:01pm 5:05pm - 5:11pm 5:16pm - - - 5:27pm X X X X X X
266 L S 4:27pm 4:32pm 4:40pm 4:48pm 4:52pm 4:56pm - 5:00pm 5:04pm 5:07pm 5:11pm 5:14pm 5:18pm i5:22pm - i5:28pm - - - 5:36pm - - 5:47pm - 5:55pm X X X X X X
368 B S 4:33pm - - - - 4:49pm - - 4:57pm - - - - 5:06pm - - 5:12pm - - - 5:21pm - - - 5:32pm 5:39pm X X X X X
270 L S 4:56pm - - 5:08pm - 5:14pm - - - - 5:22pm - - i5:28pm - i5:34pm 5:38pm 5:42pm 5:46pm 5:50pm 5:55pm 6:01pm 6:08pm - 6:16pm 6:22pm 6:29pm 6:35pm 6:48pm 6:54pm 7:07pm
372 B S 5:14pm - - - - 5:30pm - - - - 5:38pm - - - - - 5:49pm - - 5:56pm - - - - 6:11pm X X X X X X
274 L S 5:20pm - - - 5:34pm - - 5:39pm 5:43pm - 5:48pm - 5:52pm - - - 6:02pm 6:06pm - 6:12pm 6:17pm - - - 6:28pm X X X X X X
276 L S 5:27pm 5:32pm 5:40pm 5:48pm 5:52pm 5:56pm - 6:00pm 6:04pm 6:07pm 6:11pm 6:14pm 6:18pm i6:22pm - i6:28pm - - - 6:36pm - 6:43pm 6:48pm - 6:56pm 7:02pm 7:09pm 7:15pm 7:28pm 7:34pm 7:47pm
378 B S 5:33pm - - - - 5:49pm - - 5:57pm - - - - 6:06pm - - 6:12pm - - - 6:21pm - - - 6:32pm 6:39pm X X X X X
280 L S 5:56pm - - 6:08pm - 6:14pm - - - - 6:22pm - - i6:28pm - i6:34pm 6:38pm 6:42pm 6:46pm 6:50pm 6:55pm 7:01pm 7:08pm - 7:16pm 7:23pm X X X X X
382 B S 6:14pm - - - - 6:30pm - - - - 6:38pm - - - - - 6:49pm - - 6:56pm - - - - 7:11pm X X X X X X
284 L S 6:27pm 6:32pm 6:40pm 6:48pm 6:52pm 6:56pm - 7:00pm 7:04pm 7:07pm 7:11pm 7:14pm 7:18pm i7:22pm - i7:28pm - - - 7:36pm - - 7:47pm - 7:55pm X X X X X X
386 B S 6:33pm - - - - 6:49pm - - 6:57pm - - - - 7:06pm - - 7:12pm - - - 7:21pm - - - 7:32pm 7:39pm X X X X X
288 L S 6:56pm - - 7:08pm - 7:14pm - - - - 7:22pm - - i7:28pm - i7:34pm 7:38pm 7:42pm 7:46pm 7:50pm 7:55pm 7:59pm 8:04pm - 8:12pm 8:19pm X X X X X
190 N S 7:30pm 7:35pm 7:40pm 7:46pm 7:50pm 7:54pm - 7:58pm 8:01pm 8:04pm 8:07pm 8:10pm 8:13pm 8:18pm - 8:23pm 8:26pm 8:30pm 8:34pm 8:38pm 8:43pm 8:47pm 8:52pm - 9:01pm X X X X X X
192 N S 8:40pm 8:45pm 8:50pm 8:56pm 9:00pm 9:04pm - 9:08pm 9:11pm 9:14pm 9:17pm 9:20pm 9:23pm 9:28pm - 9:33pm 9:36pm 9:40pm 9:44pm 9:48pm 9:53pm 9:57pm 10:02pm - 10:11pm 10:18pm X X X X X
194 N S 9:40pm 9:45pm 9:50pm 9:56pm 10:00pm 10:04pm - 10:08pm 10:11pm 10:14pm 10:17pm 10:20pm 10:23pm 10:28pm - 10:33pm 10:36pm 10:40pm 10:44pm 10:48pm 10:53pm 10:57pm 11:02pm - 11:11pm 11:18pm X X X X X
196 N S 10:40pm 10:45pm 10:50pm 10:56pm 11:00pm 11:04pm - 11:08pm 11:11pm 11:14pm 11:17pm 11:20pm 11:23pm 11:28pm - 11:33pm 11:36pm 11:40pm 11:44pm 11:48pm 11:53pm 11:57pm 12:02am - 12:11am X X X X X X
198 N S 12:01am 12:06am 12:11am 12:17am 12:21am 12:25am - 12:29am 12:32am 12:35am 12:38am 12:41am 12:44am 12:49am - 12:54am 12:57am 1:01am 1:05am 1:09am 1:14am 1:18am 1:23am - 1:32am X X X X X X
422 W S 8:15am 8:20am 8:25am 8:31am 8:35am 8:39am 8:43am 8:45am 8:49am 8:52am 8:55am 8:58am 9:01am 9:07am 9:11am 9:14am 9:17am 9:21am 9:25am 9:29am 9:34am 9:38am 9:43am - 9:51am X X X X X X
424 W S 9:15am 9:20am 9:25am 9:31am 9:35am 9:39am 9:43am 9:45am 9:49am 9:52am 9:55am 9:58am 10:01am 10:07am 10:11am 10:14am 10:17am 10:21am 10:25am 10:29am 10:34am 10:38am 10:43am - 10:51am X X X X X X
426 W S 10:15am 10:20am 10:25am 10:31am 10:35am 10:39am 10:43am 10:45am 10:49am 10:52am 10:55am 10:58am 11:01am 11:07am 11:11am 11:14am 11:17am 11:21am 11:25am 11:29am 11:34am 11:38am 11:43am - 11:51am X X X X X X
428 W S 11:15am 11:20am 11:25am 11:31am 11:35am 11:39am 11:43am 11:45am 11:49am 11:52am 11:55am 11:58am 12:01pm 12:07pm 12:11pm 12:14pm 12:17pm 12:21pm 12:25pm 12:29pm 12:34pm 12:38pm 12:43pm - 12:51pm X X X X X X
430 W S 12:15pm 12:20pm 12:25pm 12:31pm 12:35pm 12:39pm 12:43pm 12:45pm 12:49pm 12:52pm 12:55pm 12:58pm 1:01pm 1:07pm 1:11pm 1:14pm 1:17pm 1:21pm 1:25pm 1:29pm 1:34pm 1:38pm 1:43pm - 1:51pm X X X X X X
432 W S 1:15pm 1:20pm 1:25pm 1:31pm 1:35pm 1:39pm 1:43pm 1:45pm 1:49pm 1:52pm 1:55pm 1:58pm 2:01pm 2:07pm 2:11pm 2:14pm 2:17pm 2:21pm 2:25pm 2:29pm 2:34pm 2:38pm 2:43pm - 2:51pm X X X X X X
434 W S 2:15pm 2:20pm 2:25pm 2:31pm 2:35pm 2:39pm 2:43pm 2:45pm 2:49pm 2:52pm 2:55pm 2:58pm 3:01pm 3:07pm 3:11pm 3:14pm 3:17pm 3:21pm 3:25pm 3:29pm 3:34pm 3:38pm 3:43pm - 3:51pm X X X X X X
436 W S 3:15pm 3:20pm 3:25pm 3:31pm 3:35pm 3:39pm 3:43pm 3:45pm 3:49pm 3:52pm 3:55pm 3:58pm 4:01pm 4:07pm 4:11pm 4:14pm 4:17pm 4:21pm 4:25pm 4:29pm 4:34pm 4:38pm 4:43pm - 4:51pm X X X X X X
438 W S 4:15pm 4:20pm 4:25pm 4:31pm 4:35pm 4:39pm 4:43pm 4:45pm 4:49pm 4:52pm 4:55pm 4:58pm 5:01pm 5:07pm 5:11pm 5:14pm 5:17pm 5:21pm 5:25pm 5:29pm 5:34pm 5:38pm 5:43pm - 5:51pm X X X X X X
440 W S 5:15pm 5:20pm 5:25pm 5:31pm 5:35pm 5:39pm 5:43pm 5:45pm 5:49pm 5:52pm 5:55pm 5:58pm 6:01pm 6:07pm 6:11pm 6:14pm 6:17pm 6:21pm 6:25pm 6:29pm 6:34pm 6:38pm 6:43pm - 6:51pm X X X X X X
442 W S 6:15pm 6:20pm 6:25pm 6:31pm 6:35pm 6:39pm 6:43pm 6:45pm 6:49pm 6:52pm 6:55pm 6:58pm 7:01pm 7:07pm 7:11pm 7:14pm 7:17pm 7:21pm 7:25pm 7:29pm 7:34pm 7:38pm 7:43pm - 7:51pm X X X X X X
444 W S 7:15pm 7:20pm 7:25pm 7:31pm 7:35pm 7:39pm 7:43pm 7:45pm 7:49pm 7:52pm 7:55pm 7:58pm 8:01pm 8:07pm 8:11pm 8:14pm 8:17pm 8:21pm 8:25pm 8:29pm 8:34pm 8:38pm 8:43pm - 8:51pm X X X X X X
446 W S 8:15pm 8:20pm 8:25pm 8:31pm 8:35pm 8:39pm 8:43pm 8:45pm 8:49pm 8:52pm 8:55pm 8:58pm 9:01pm 9:07pm 9:11pm 9:14pm 9:17pm 9:21pm 9:25pm 9:29pm 9:34pm 9:38pm 9:43pm - 9:51pm X X X X X X
448 W S 9:15pm 9:20pm 9:25pm 9:31pm 9:35pm 9:39pm 9:43pm 9:45pm 9:49pm 9:52pm 9:55pm 9:58pm 10:01pm 10:07pm 10:11pm 10:14pm 10:17pm 10:21pm 10:25pm 10:29pm 10:34pm 10:38pm 10:43pm - 10:51pm X X X X X X
450 S S 10:15pm 10:20pm 10:25pm 10:31pm 10:35pm 10:39pm 10:43pm 10:45pm 10:49pm 10:52pm 10:55pm 10:58pm 11:01pm 11:07pm 11:11pm 11:14pm 11:17pm 11:21pm 11:25pm 11:29pm 11:34pm 11:38pm 11:43pm - 11:51pm X X X X X X
454 S S 12:01am 12:06am 12:11am 12:17am 12:21am 12:25am 12:29am 12:31am 12:35am 12:38am 12:41am 12:44am 12:47am 12:53am 12:57am 1:00am 1:03am 1:07am 1:11am 1:15am 1:20am 1:24am 1:29am - 1:37am X X X X X X
101 N N 6:01am 5:52am 5:47am 5:41am 5:37am 5:33am - 5:28am 5:25am 5:22am 5:19am 5:16am 5:13am 5:09am - 5:04am 5:01am 4:57am 4:53am 4:49am 4:44am 4:40am 4:35am - 4:30am X X X X X X
103 N N 6:36am 6:27am 6:22am 6:16am 6:12am 6:08am - 6:03am 6:00am 5:57am 5:54am 5:51am 5:48am 5:44am - 5:39am 5:36am 5:32am 5:28am 5:24am 5:19am 5:15am 5:10am - 5:05am 4:58am X X X X X
305 B N 6:42am - - - - 6:24am - - - - 6:16am - - - - - 6:05am - - 5:57am - - - - 5:45am X X X X X X
207 L N 7:19am - - 7:05am - 6:59am - - - - 6:51am - - i6:45am - i6:39am 6:36am 6:31am 6:27am 6:23am 6:18am 6:12am 6:02am - 5:57am 5:50am X X X X X
309 B N 7:02am - - - - 6:45am - - 6:39am - - - - 6:30am - - 6:23am - - - 6:13am - - - 6:03am 5:56am X X X X X
211 L N 7:48am 7:40am 7:33am 7:25am 7:21am 7:17am - 7:11am 7:08am 7:05am 7:02am 6:58am 6:55am i6:51am - i6:45am - - - 6:37am - - 6:27am - 6:22am X X X X X X
313 B N 7:42am - - - - 7:24am - - - - 7:16am - - - - - 7:05am - - 6:57am - - - - 6:45am X X X X X X
215 L N 7:57am - - - 7:42am - - 7:35am 7:32am - 7:28am - 7:24am - - - 7:16am 7:11am - 7:05am 7:00am - - - 6:50am X X X X X X
217 L N 8:19am - - 8:05am - 7:59am - - - - 7:51am - - i7:45am - i7:39am 7:36am 7:31am 7:27am 7:23am 7:18am 7:12am 7:02am - 6:57am 6:49am 6:41am 6:35am 6:22am 6:16am 6:07am
319 B N 8:02am - - - - 7:45am - - 7:39am - - - - 7:30am - - 7:23am - - - 7:13am - - - 7:03am 6:56am X X X X X
221 L N 8:48am 8:40am 8:33am 8:25am 8:21am 8:17am - 8:11am 8:08am 8:05am 8:02am 7:58am 7:55am i7:51am - i7:45am - - - 7:37am - 7:30am 7:25am - 7:20am 7:12am 7:04am 6:58am 6:45am 6:39am 6:30am
323 B N 8:42am - - - - 8:24am - - - - 8:16am - - - - - 8:05am - - 7:57am - - - - 7:45am X X X X X X
225 L N 8:57am - - - 8:42am - - 8:35am 8:32am - 8:28am - 8:24am - - - 8:16am 8:11am - 8:05am 8:00am - - - 7:50am X X X X X X
227 L N 9:19am - - 9:05am - 8:59am - - - - 8:51am - - i8:45am - i8:39am 8:36am 8:31am 8:27am 8:23am 8:18am 8:12am 8:02am 7:58am 7:55am 7:47am 7:39am 7:33am 7:20am 7:14am 7:05am
329 B N 9:02am - - - - 8:45am - - 8:39am - - - - 8:30am - - 8:23am - - - 8:13am - - - 8:03am 7:56am X X X X X
231 L N 9:45am 9:37am 9:31am 9:25am 9:21am 9:17am - 9:11am 9:08am 9:05am 9:02am 8:58am 8:55am i8:51am - i8:45am - - - 8:37am - - 8:27am - 8:22am X X X X X X
233 L N 10:02am - - - 9:45am 9:41am - 9:36am 9:33am - 9:29am 9:26am 9:23am 9:19am - 9:14am 9:11am 9:07am 9:03am 8:59am 8:54am 8:50am 8:45am - 8:40am 8:33am X X X X X
135 N N 10:41am 10:32am 10:27am 10:21am 10:17am 10:13am - 10:08am 10:05am 10:02am 9:59am 9:56am 9:53am 9:49am - 9:44am 9:41am 9:37am 9:33am 9:29am 9:24am 9:20am 9:15am - 9:10am X X X X X X
237 L N 11:02am - - - 10:45am 10:41am - 10:36am 10:33am - 10:29am 10:26am 10:23am 10:19am - 10:14am 10:11am 10:07am 10:03am 9:59am 9:54am 9:50am 9:45am - 9:40am 9:33am X X X X X
139 N N 11:41am 11:32am 11:27am 11:21am 11:17am 11:13am - 11:08am 11:05am 11:02am 10:59am 10:56am 10:53am 10:49am - 10:44am 10:41am 10:37am 10:33am 10:29am 10:24am 10:20am 10:15am - 10:10am X X X X X X
143 N N 12:41pm 12:32pm 12:27pm 12:21pm 12:17pm 12:13pm - 12:08pm 12:05pm 12:02pm 11:59am 11:56am 11:53am 11:49am - 11:44am 11:41am 11:37am 11:33am 11:29am 11:24am 11:20am 11:15am - 11:10am X X X X X X
147 N N 1:41pm 1:32pm 1:27pm 1:21pm 1:17pm 1:13pm - 1:08pm 1:05pm 1:02pm 12:59pm 12:56pm 12:53pm 12:49pm - 12:44pm 12:41pm 12:37pm 12:33pm 12:29pm 12:24pm 12:20pm 12:15pm - 12:10pm X X X X X X
151 N N 2:41pm 2:32pm 2:27pm 2:21pm 2:17pm 2:13pm - 2:08pm 2:05pm 2:02pm 1:59pm 1:56pm 1:53pm 1:49pm - 1:44pm 1:41pm 1:37pm 1:33pm 1:29pm 1:24pm 1:20pm 1:15pm - 1:10pm X X X X X X
155 N N 3:41pm 3:32pm 3:27pm 3:21pm 3:17pm 3:13pm - 3:08pm 3:05pm 3:02pm 2:59pm 2:56pm 2:53pm 2:49pm - 2:44pm 2:41pm 2:37pm 2:33pm 2:29pm 2:24pm 2:20pm 2:15pm - 2:10pm X X X X X X
257 L N 4:02pm - - - 3:45pm 3:41pm - 3:36pm 3:33pm - 3:29pm 3:26pm 3:23pm 3:19pm - 3:14pm 3:11pm 3:07pm 3:03pm 2:59pm 2:54pm 2:50pm 2:45pm - 2:40pm 2:33pm X X X X X
159 N N 4:38pm 4:29pm 4:24pm 4:18pm 4:14pm 4:10pm - 4:05pm 4:02pm 3:59pm 3:56pm 3:53pm 3:50pm 3:46pm - 3:41pm 3:38pm 3:34pm 3:30pm 3:26pm 3:21pm 3:17pm 3:12pm 3:08pm 3:05pm X X X X X X
261 L N 5:03pm 4:55pm - - - 4:43pm - - 4:36pm - - - i4:29pm i4:25pm - 4:19pm 4:16pm 4:11pm 4:07pm 4:03pm 3:58pm 3:54pm 3:49pm - 3:44pm 3:37pm X X X X X
263 L N 5:29pm 5:21pm 5:13pm 5:05pm 5:01pm 4:57pm - 4:51pm 4:48pm 4:45pm 4:42pm 4:38pm i4:35pm i4:31pm - - 4:24pm - - - - - 4:10pm - 4:05pm 3:58pm X X X X X
365 B N 5:24pm 5:17pm - - - 5:05pm - - - - - - - 4:52pm - 4:46pm - - - 4:37pm - - - - 4:25pm X X X X X X
267 L N 6:02pm 5:55pm - - - 5:43pm - - 5:36pm - - - i5:29pm i5:25pm - 5:19pm 5:16pm 5:11pm 5:07pm 5:03pm 4:58pm 4:52pm 4:44pm - 4:39pm 4:32pm X X X X X
369 B N 5:44pm 5:37pm - - - 5:25pm - - - - 5:17pm - - - - - 5:06pm - - 4:58pm - - - - 4:45pm X X X X X X
271 L N 6:29pm 6:21pm 6:13pm 6:05pm 6:01pm 5:57pm - 5:51pm 5:48pm 5:45pm 5:42pm 5:38pm i5:35pm i5:31pm - - 5:24pm - - - - - 5:10pm - 5:05pm 4:58pm X X X X X
373 B N 6:24pm 6:17pm - - - 6:05pm - - - - - - - 5:52pm - 5:46pm - - - 5:37pm - - - - 5:25pm X X X X X X
275 L N 6:39pm - - - 6:22pm - - 6:15pm 6:12pm - 6:08pm - 6:04pm - - 5:57pm 5:54pm - - 5:46pm - 5:39pm - - 5:31pm X X X X X X
277 L N 7:02pm 6:55pm - - - 6:43pm - - 6:36pm - - - i6:29pm i6:25pm - 6:19pm 6:16pm 6:11pm 6:07pm 6:03pm 5:58pm 5:52pm 5:44pm - 5:39pm 5:32pm X X X X X
379 B N 6:44pm 6:37pm - - - 6:25pm - - - - 6:17pm - - - - - 6:06pm - - 5:58pm - - - - 5:45pm X X X X X X
281 L N 7:29pm 7:21pm 7:13pm 7:05pm 7:01pm 6:57pm - 6:51pm 6:48pm 6:45pm 6:42pm 6:38pm i6:35pm i6:31pm - - 6:24pm - - - - - 6:10pm - 6:05pm 5:58pm X X X X X
383 B N 7:24pm 7:17pm - - - 7:05pm - - - - - - - 6:52pm - 6:46pm - - - 6:37pm - - - - 6:25pm X X X X X X
285 L N 7:39pm - - - 7:22pm - - 7:15pm 7:12pm - 7:08pm - 7:04pm - - 6:57pm 6:54pm - - 6:46pm - 6:39pm - - 6:31pm 6:24pm X X X X X
287 L N 8:00pm 7:53pm - - - 7:41pm - 7:35pm 7:32pm - 7:28pm - 7:23pm 7:19pm - 7:13pm 7:10pm 7:06pm - 7:00pm - 6:53pm - - 6:45pm X X X X X X
189 N N 8:21pm 8:12pm 8:07pm 8:01pm 7:57pm 7:53pm - 7:48pm 7:45pm 7:42pm 7:39pm 7:36pm 7:33pm 7:29pm - 7:24pm 7:21pm 7:17pm 7:13pm 7:09pm 7:04pm 7:00pm 6:55pm - 6:50pm X X X X X X
191 N N 9:01pm 8:52pm 8:47pm 8:41pm 8:37pm 8:33pm - 8:28pm 8:25pm 8:22pm 8:19pm 8:16pm 8:13pm 8:09pm - 8:04pm 8:01pm 7:57pm 7:53pm 7:49pm 7:44pm 7:40pm 7:35pm - 7:30pm X X X X X X
193 N N 10:01pm 9:52pm 9:47pm 9:41pm 9:37pm 9:33pm - 9:28pm 9:25pm 9:22pm 9:19pm 9:16pm 9:13pm 9:09pm - 9:04pm 9:01pm 8:57pm 8:53pm 8:49pm 8:44pm 8:40pm 8:35pm - 8:30pm 8:23pm X X X X X
195 N N 11:01pm 10:52pm 10:47pm 10:41pm 10:37pm 10:33pm - 10:28pm 10:25pm 10:22pm 10:19pm 10:16pm 10:13pm 10:09pm - 10:04pm 10:01pm 9:57pm 9:53pm 9:49pm 9:44pm 9:40pm 9:35pm - 9:30pm 9:23pm X X X X X
197 N N 12:01am 11:52pm 11:47pm 11:41pm 11:37pm 11:33pm - 11:28pm 11:25pm 11:22pm 11:19pm 11:16pm 11:13pm 11:09pm - 11:04pm 11:01pm 10:57pm 10:53pm 10:49pm 10:44pm 10:40pm 10:35pm - 10:30pm X X X X X X
421 S N 8:36am 8:28am 8:23am 8:17am 8:12am 8:08am 8:03am 8:00am 7:57am 7:54am 7:51am 7:48am 7:45am 7:41am 7:37am 7:34am 7:31am 7:27am 7:23am 7:19am 7:14am 7:10am 7:05am - 7:00am X X X X X X
423 W N 9:36am 9:28am 9:23am 9:17am 9:12am 9:08am 9:03am 9:00am 8:57am 8:54am 8:51am 8:48am 8:45am 8:41am 8:37am 8:34am 8:31am 8:27am 8:23am 8:19am 8:14am 8:10am 8:05am - 8:00am X X X X X X
425 W N 10:36am 10:28am 10:23am 10:17am 10:12am 10:08am 10:03am 10:00am 9:57am 9:54am 9:51am 9:48am 9:45am 9:41am 9:37am 9:34am 9:31am 9:27am 9:23am 9:19am 9:14am 9:10am 9:05am - 9:00am X X X X X X
427 W N 11:36am 11:28am 11:23am 11:17am 11:12am 11:08am 11:03am 11:00am 10:57am 10:54am 10:51am 10:48am 10:45am 10:41am 10:37am 10:34am 10:31am 10:27am 10:23am 10:19am 10:14am 10:10am 10:05am - 10:00am X X X X X X
429 W N 12:36pm 12:28pm 12:23pm 12:17pm 12:12pm 12:08pm 12:03pm 12:00pm 11:57am 11:54am 11:51am 11:48am 11:45am 11:41am 11:37am 11:34am 11:31am 11:27am 11:23am 11:19am 11:14am 11:10am 11:05am - 11:00am X X X X X X
431 W N 1:36pm 1:28pm 1:23pm 1:17pm 1:12pm 1:08pm 1:03pm 1:00pm 12:57pm 12:54pm 12:51pm 12:48pm 12:45pm 12:41pm 12:37pm 12:34pm 12:31pm 12:27pm 12:23pm 12:19pm 12:14pm 12:10pm 12:05pm - 12:00pm X X X X X X
433 W N 2:36pm 2:28pm 2:23pm 2:17pm 2:12pm 2:08pm 2:03pm 2:00pm 1:57pm 1:54pm 1:51pm 1:48pm 1:45pm 1:41pm 1:37pm 1:34pm 1:31pm 1:27pm 1:23pm 1:19pm 1:14pm 1:10pm 1:05pm - 1:00pm X X X X X X
435 W N 3:36pm 3:28pm 3:23pm 3:17pm 3:12pm 3:08pm 3:03pm 3:00pm 2:57pm 2:54pm 2:51pm 2:48pm 2:45pm 2:41pm 2:37pm 2:34pm 2:31pm 2:27pm 2:23pm 2:19pm 2:14pm 2:10pm 2:05pm - 2:00pm X X X X X X
437 W N 4:36pm 4:28pm 4:23pm 4:17pm 4:12pm 4:08pm 4:03pm 4:00pm 3:57pm 3:54pm 3:51pm 3:48pm 3:45pm 3:41pm 3:37pm 3:34pm 3:31pm 3:27pm 3:23pm 3:19pm 3:14pm 3:10pm 3:05pm - 3:00pm X X X X X X
439 W N 5:36pm 5:28pm 5:23pm 5:17pm 5:12pm 5:08pm 5:03pm 5:00pm 4:57pm 4:54pm 4:51pm 4:48pm 4:45pm 4:41pm 4:37pm 4:34pm 4:31pm 4:27pm 4:23pm 4:19pm 4:14pm 4:10pm 4:05pm - 4:00pm X X X X X X
441 W N 6:36pm 6:28pm 6:23pm 6:17pm 6:12pm 6:08pm 6:03pm 6:00pm 5:57pm 5:54pm 5:51pm 5:48pm 5:45pm 5:41pm 5:37pm 5:34pm 5:31pm 5:27pm 5:23pm 5:19pm 5:14pm 5:10pm 5:05pm - 5:00pm X X X X X X
443 W N 7:36pm 7:28pm 7:23pm 7:17pm 7:12pm 7:08pm 7:03pm 7:00pm 6:57pm 6:54pm 6:51pm 6:48pm 6:45pm 6:41pm 6:37pm 6:34pm 6:31pm 6:27pm 6:23pm 6:19pm 6:14pm 6:10pm 6:05pm - 6:00pm X X X X X X
445 W N 8:36pm 8:28pm 8:23pm 8:17pm 8:12pm 8:08pm 8:03pm 8:00pm 7:57pm 7:54pm 7:51pm 7:48pm 7:45pm 7:41pm 7:37pm 7:34pm 7:31pm 7:27pm 7:23pm 7:19pm 7:14pm 7:10pm 7:05pm - 7:00pm X X X X X X
447 W N 9:36pm 9:28pm 9:23pm 9:17pm 9:12pm 9:08pm 9:03pm 9:00pm 8:57pm 8:54pm 8:51pm 8:48pm 8:45pm 8:41pm 8:37pm 8:34pm 8:31pm 8:27pm 8:23pm 8:19pm 8:14pm 8:10pm 8:05pm - 8:00pm X X X X X X
449 W N 10:36pm 10:28pm 10:23pm 10:17pm 10:12pm 10:08pm 10:03pm 10:00pm 9:57pm 9:54pm 9:51pm 9:48pm 9:45pm 9:41pm 9:37pm 9:34pm 9:31pm 9:27pm 9:23pm 9:19pm 9:14pm 9:10pm 9:05pm - 9:00pm X X X X X X
451 S N 12:06am 11:58pm 11:53pm 11:47pm 11:42pm 11:38pm 11:33pm 11:30pm 11:27pm 11:24pm 11:21pm 11:18pm 11:15pm 11:11pm 11:07pm 11:04pm 11:01pm 10:57pm 10:53pm 10:49pm 10:44pm 10:40pm 10:35pm - 10:30pm X X X X X X
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment