Traffic Accidents

Making 25 years of Swiss road accident data legible, and worth reading

Data Visualisation · Bern University of Applied Sciences · Academic project

Data visualisationInformation designSystems thinkingEditorial
Traffic Accidents
The situation

As part of my studies in data visualisation at Bern University of Applied Sciences, I was commissioned to take on a self-directed visualisation project. I chose 25 years of Swiss road traffic accident statistics: dense, multidimensional, and covering a subject serious enough that it deserved more than a headline number.

The initial dataset from the Federal Statistical Office, Master I, was too coarse to work with: accidents were only logged in six-hour blocks, without victim counts. After repeated follow-up requests to the federal roads office, I got access to Master II, an hourly dataset with counts by injury severity, which is what made the later hour-by-hour and weekday visualisations possible at all.

Both datasets already followed Wickham’s tidy-data principle, so no cleanup was needed. But they still had to be reshaped from wide into stacked/narrow form before the visualisation tool I settled on could use them, and I built several derived sub-datasets from the two master sets as the direction of the series became clearer.

Master I, as originally supplied, versus Master II, secured after follow-up with ASTRA. The difference in time resolution is what unlocked the later hourly and weekday visualisations.
Master I, as originally supplied, versus Master II, secured after follow-up with ASTRA. The difference in time resolution is what unlocked the later hourly and weekday visualisations.
The constraint

The work was aimed at magazine readers rather than daily-newspaper readers: an audience willing to spend real time with a page instead of scanning it. That shaped everything. The visualisations had to reward attention and hold up to slow, repeated reading, not just deliver a single takeaway at a glance.

I originally planned this as a poster for the course’s closing exhibition, but partway through detail design I realised the format only really served that one exhibition context. Reframing it as a three-piece series for a monthly magazine format (modelled on NZZ Folio) gave the work a real audience and opened up the hour/weekday/month structure that the final series is built on.

How I framed it

I rejected conventional chart types early. A bar chart of monthly totals is accurate but invisible. It carries the data without creating understanding. I started in a sketchbook, not in software, sketching radial layouts, grid structures, and wave forms.

The dataset was too large to model by hand, so before building anything I evaluated the tools available. Tableau read as built for business analysts and felt over-engineered for what I needed; Plotly leaned too far toward developers with Python skills I didn’t have; Datawrapper was fast but its chart types were conventional. I settled on Raw Graphs, an open-source tool aimed squarely at designers, for its unconventional plot types: stream graphs, horizon graphs, dendrograms.

I used it to explore bump charts, horizon graphs, and stream graphs with different offsets before committing to the stream graph, because it communicated the wave-like rise and fall of accident frequency without asking the reader to first understand the underlying data.

Early sketchbook explorations: radial layouts, grid structures, and wave forms, worked out on paper before any chart was built in software.
Early sketchbook explorations: radial layouts, grid structures, and wave forms, worked out on paper before any chart was built in software.

The hardest problem in data work is not accuracy. It is encoding the data in a form that makes the insight feel obvious in retrospect.

The work

Each visualisation isolated a different dimension of the dataset. A stream graph plotted accident frequency by hour and month together, revealing that accidents cluster around commute windows and shift with the seasons as daylight changes. A dot matrix laid out all 25 years by weekday side by side, making the elevated risk of Fridays, and the declining risk of Saturdays as enforcement tightened, read as a structural pattern rather than a coincidence.

Testing an early version with size-based hierarchy showed the risk of over-designing this: sorting the months by victim count made the chart punchier, but broke the chronological order readers relied on to orient themselves, and slowed comprehension. I kept the timeline intact and let color density carry the emphasis instead.

A consistent color and type system tied every piece together across the series, set in the host publication’s own headline and body type, with a separate, tighter-set typeface for scales and captions. Explorative annotations of specific, dated accidents invited readers to connect the statistics back to real events.

A wider software-generated exploration: bump chart, horizon graph, and two stream graph variants, before committing to the stream graph as the primary form.
A wider software-generated exploration: bump chart, horizon graph, and two stream graph variants, before committing to the stream graph as the primary form.
The shared color, type, and scale system that ties every visualisation in the series together, keeping 25 years of disparate charts reading as one coherent piece.
The shared color, type, and scale system that ties every visualisation in the series together, keeping 25 years of disparate charts reading as one coherent piece.

Before

Federal accident data too coarse: six-hour blocks, no victim counts

Raw statistical data with no visual language

Multiple entangled dimensions: hour, weekday, month, year, severity

No established visual form for the problem

Target audience needed depth, not a headline figure

After

Hourly, severity-level data secured directly from the federal roads office

Stream graph showing accident frequency by hour and month together

Dot matrix encoding 25 years of weekday totals simultaneously

Daylight overlay surfacing the causal link with commute-time peaks

Shared color and type system across the full visual series

Annotated real accidents giving the statistics human context

The final pieces
"Die Stosszeit ist am gefährlichsten": accident frequency by hour, across all twelve months.
"Die Stosszeit ist am gefährlichsten": accident frequency by hour, across all twelve months.
"Am Freitag kracht’s am meisten": 25 years of weekday totals laid out as a dot matrix.
"Am Freitag kracht’s am meisten": 25 years of weekday totals laid out as a dot matrix.
"Der Sommer endet öfters fatal": monthly fatality totals over 25 years, annotated with specific accidents.
"Der Sommer endet öfters fatal": monthly fatality totals over 25 years, annotated with specific accidents.
The outcome

The finished series demonstrated that complex statistical data could be made genuinely engaging for a general audience, not by simplifying it, but by finding the right visual form for each dimension of the dataset and giving the reader time to sit with it.

What I'd do differently

I would test the visualisations with readers outside the design and data community before finalising. The stream graph in particular rewards a moment of explanation before it clicks. I assumed more visual fluency in my target audience than was realistic.