Half a Million Journeys on the London Underground

This animation from Will Gallia shows over 500,000 individual journeys on the London Underground network, it’s a 5% sample of Oyster-card journeys during a week back in 2009. Will has taken the individual origin/destination data and applied a routing algorithm to determine the likely route. I don’t think it’s perfect (the Underground flows north to London Bridge in the morning peak look a little low) but you can still clearly see people streaming inwards in the morning, and back outwards in the evening. You can also see comparatively underused parts of the network – the Hainault loop of the Central line in the top-right for instance, Aldgate on the Met, and individual bursts of travellers appearing in Chesham and Amersham in the far top-left (the trains there are quite infrequent).

A key innovation is transplanting these journeys back onto the geometries of the “official” (and non-geographical) Beck-style tube map, so that it looks like the regular tube map that everyone knows, but “buzzing” with – and indeed created solely by – people. His animation slows the clock at one point and “flies in” to part of the map for a more detailed look. Each dot is a single person, undergoing their journey at that moment of the day.

I like the simplicity of the idea – one person, one coloured dot. The directional flows therefore stand out, particularly at the start and end of the day when the network is quieter. During the rush hours it’s pretty intense – but then, tube travel is pretty intense then too! The density of the dots is sufficient that the map itself is fully recreated by the people moving along the network.

Will has used advanced coding and optimisation techniques, using openFrameworks, to allow for thousands of journeys being animated simultaneously. He’s open-sourced his code, you can see/download it on GitHub in two parts, here and here.

Link directly to the video.
Link to more information about the project.



Leave a Reply

Your email address will not be published. Required fields are marked *