3D-printed Subway Map

black and blue from side

When working in the FabLab Berlin I experimented with ‘physical data visualisation’: making physical representations of data. There is even a term and website for it: data physicalization. I created a 3D version of the all-known subway map:

ubahn cutout2

The traditional map draws next to each other, when they share part of a route. In the 3D version I stack those lines vertically, one on top of the other, any time they share part of the network or a station. I did two versions: one of the U-Bahn only, the other of both the S and U-Bahn (U-Bahns run under ground, the S-bahn are more like regular trains and run above-ground). Below are images of the final prints. The black print is that of the S and U-Bahns, the blue one is that of the U-Bahn only.

top view

side view black2

The blue print is printed with transparent PLA and without any infill and only one shell, so the tubes are hollow and transparent.


Let me explain how I made these! First, I put a grid over the original map. I wrote the location of the subway stations in a JSON format, together with the routes of the lines.

ubahn grid


I wrote a program in Java/Processing, using the Toxiclibs library for creating the 3D shape and exporting it to STL. The program reads the JSON file above, and draws lines from station to station, following the S and UBahn itineraries. I smoothed the lines a little. As you can see, the lines are stacked when they cross each other, or when their itineraries coincide.


I then extrude a circle shape along the curves, creating the solid shapes of the tubes:


This shape is then exported as an STL file and read in the Makerbot software.


For the black version, I used standard settings except for the ‘raft to model spacing’ setting: I set that to 0.4 (instead of the default 0.22) to make it easier to remove the raft from the model. I also tried printing without any raft, but that failed miserably (even on the i3Berlin printers they have at the FabLab, with heated beds). It took a whopping 15 hours to print the black model.

printing subahn

And I am not counting the times at which the print failed, for instance because the filament got stuck:


failedprint2 failedprint3

Clean the bed, start over again, and pray that this time it will make it until the end…