Berlin Data Stories
Berlin in Squares
Twelve districts, nine elections since 2011, one square per election. You can adjust every example yourself.
Twenty attempts
Honestly: election charts bore me. Bars, pies, arrows going up and down. I wanted something you can hang on the wall and still read.
That turned into 20 rounds of sketches. The first ones were charts, just prettier. Then I went looking for ideas in art history, with Richter, Albers, Mondrian and Rothko (Rothko: not my thing at all). I mixed party colours until everything looked like terrible mud. There was a knitted band with holes, an advertising pillar, a mobile after Calder and gummy bears (bear … Berlin … you get the point), prompted by Doug McCune’s 3D-printed election sculpture. None of them was really good!
What finally moved me on was “American Democracy” by PSJM: every US presidential election as its own strictly flat picture. I didn’t want to copy it, but I liked the rigour. What was left was a simple rule. One square per election, every block as big as its share of the vote, every party always in the same place. The number sits in the block, as big as it fits.
Mostly I learned one thing: as soon as people should read the numbers exactly, every idea turns back into a chart. So the square is one too. A pretty nice one, I think.
Three places to look
One note first: every square lumps all parties under 5% into one grey block, together with the minor parties the data calls “others”. Chapter 2 shows how that works.
- The Pirates in 2011. Over 5% in all twelve districts, 14.7% in Friedrichshain-Kreuzberg. Five years later they are at 1.7% across Berlin and vanish into the grey. Pirates in all districts
- Who slips into the grey. In the 2013 Bundestag election the AfD sat in the grey in Berlin with 4.9%, today it has its own block everywhere. In the 2023 House of Representatives election the FDP vanished into the grey with 4.6%, in 2026 the BSW with 4.7%. FDP in all districts
- Friedrichshain-Kreuzberg 2026. Die Linke gets 44%. That is the biggest block of all districts and elections. See the district over time
One square, one election
This is Friedrichshain-Kreuzberg in the 2026 House of Representatives election. Every coloured block is a party, as big as its share of the vote.
Where the blocks sit follows a rule: the first one cuts off a piece vertically, the second one horizontally, always taking turns. That gives every party its fixed place.
| Party | Share |
|---|---|
| AfD | 6.0% |
| CDU | 8.8% |
| Greens | 20.7% |
| The Left | 44.2% |
| SPD | 9.5% |
| Grey, all parties below 5% | 10.7% |
| Turnout | 77.3% |
The threshold
Parties below the threshold end up in the grey block. Drag the slider: blocks disappear or appear.
At 0% every party gets its own block. The line under the square names what is inside the grey.
| Party | Share |
|---|---|
| AfD | 6.0% |
| CDU | 8.8% |
| Greens | 20.7% |
| The Left | 44.2% |
| SPD | 9.5% |
| Grey, all parties below 5% | 10.7% |
| Turnout | 77.3% |
The order
Fixed places means: every party sits in the same spot in every square. That way you see change at a glance.
Sorted by size, every party moves around from election to election. Switch over and compare 2016 with 2026.
| Party | Share |
|---|---|
| AfD | 6.4% |
| CDU | 7.8% |
| Greens | 28.4% |
| The Left | 23.4% |
| SPD | 18.2% |
| Grey, all parties below 5% | 15.8% |
| Turnout | 68.5% |
| Party | Share |
|---|---|
| AfD | 6.0% |
| CDU | 8.8% |
| Greens | 20.7% |
| The Left | 44.2% |
| SPD | 9.5% |
| Grey, all parties below 5% | 10.7% |
| Turnout | 77.3% |
Non-voters
Here the square stands for everyone eligible to vote. The empty area on the right is the people who didn’t vote. Corner marks show the whole square.
Switch the non-voters off and the square stands for valid votes only again, like in all the other examples.
| Party | Share |
|---|---|
| AfD | 6.0% |
| CDU | 8.8% |
| Greens | 20.7% |
| The Left | 44.2% |
| SPD | 9.5% |
| Grey, all parties below 5% | 10.7% |
| Turnout | 77.3% |
One district over time
Pick a district and an election. At the top the square glides from election to election, below it all elections sit side by side.
| Party | Share |
|---|---|
| CDU | 8.4% |
| Greens | 30.3% |
| The Left | 13.0% |
| Pirates | 14.7% |
| SPD | 23.9% |
| Grey, all parties below 5% | 9.8% |
| Turnout | 62.2% |
Friedrichshain-Kreuzberg, House of Representatives 2011 Party Share CDU 8.4% Greens 30.3% The Left 13.0% Pirates 14.7% SPD 23.9% Grey, all parties below 5% 9.8% Turnout 62.2% 2011 Turnout 62.2% Grey 10%: Animal Protection Party 1.2%, FDP 1.0% and other small parties. Friedrichshain-Kreuzberg, House of Representatives 2016 Party Share AfD 6.4% CDU 7.8% Greens 28.4% The Left 23.4% SPD 18.2% Grey, all parties below 5% 15.8% Turnout 68.5% 2016 Turnout 68.5% Grey 16%: FDP 3.9%, Pirates 3.1%, Animal Protection Party 1.5% and other small parties. Friedrichshain-Kreuzberg, House of Representatives 2021 Party Share CDU 7.6% Greens 32.3% The Left 23.6% SPD 15.1% Grey, all parties below 5% 21.4% Turnout 78.8% 2021 Turnout 78.8% Grey 21%: FDP 4.8%, AfD 3.1%, Animal Protection Party 1.7% and other small parties. Friedrichshain-Kreuzberg, House of Representatives 2023 Party Share CDU 13.4% Greens 33.5% The Left 21.1% SPD 14.6% Grey, all parties below 5% 17.4% Turnout 64.5% 2023 Turnout 64.5% Grey 17%: AfD 3.7%, FDP 3.3%, Animal Protection Party 2.0% and other small parties. Friedrichshain-Kreuzberg, House of Representatives 2026 Party Share AfD 6.0% CDU 8.8% Greens 20.7% The Left 44.2% SPD 9.5% Grey, all parties below 5% 10.7% Turnout 77.3% 2026 Turnout 77.3% Grey 11%: BSW 3.8%, FDP 1.6%, Animal Protection Party 1.3% and other small parties.
All districts, all elections
All twelve districts, in alphabetical order. The same threshold applies to every square. Click a party to highlight it everywhere.
12 districts, 5 elections, threshold 5%
Grey combines all parties below 5% and the others.
| Election | Grey | Includes |
|---|---|---|
| 2011 | 10% | FDP 1.8%, Animal Protection Party 1.5% and others |
| 2016 | 9% | Animal Protection Party 1.9%, Pirates 1.7% and others |
| 2021 | 12% | Animal Protection Party 2.2% and others |
| 2023 | 14% | FDP 4.6%, Animal Protection Party 2.4% and others |
| 2026 | 13% | BSW 4.7%, FDP 2.5%, Animal Protection Party 2.1% and others |
| District and election | AfD | BSW | CDU | FDP | Greens | The Left | Pirates | SPD | Grey, all parties below 5% | Turnout |
|---|---|---|---|---|---|---|---|---|---|---|
| Charlottenburg-Wilmersdorf, State parliament 2011 | not listed separately | not listed separately | 28.2% | in grey | 21.7% | in grey | 7.0% | 31.2% | 11.9% | 65.1% |
| Charlottenburg-Wilmersdorf, State parliament 2016 | 10.3% | not listed separately | 20.3% | 12.3% | 18.5% | 9.3% | in grey | 22.8% | 6.5% | 70.0% |
| Charlottenburg-Wilmersdorf, State parliament 2021 | in grey | not listed separately | 21.0% | 10.4% | 22.7% | 8.6% | in grey | 22.6% | 14.7% | 78.5% |
| Charlottenburg-Wilmersdorf, State parliament 2023 | 5.3% | not listed separately | 30.6% | 7.3% | 21.6% | 7.7% | in grey | 20.7% | 6.9% | 66.4% |
| Charlottenburg-Wilmersdorf, State parliament 2026 | 9.7% | in grey | 25.4% | in grey | 18.1% | 19.9% | not listed separately | 14.8% | 12.1% | 76.2% |
| Friedrichshain-Kreuzberg, State parliament 2011 | not listed separately | not listed separately | 8.4% | in grey | 30.3% | 13.0% | 14.7% | 23.9% | 9.8% | 62.2% |
| Friedrichshain-Kreuzberg, State parliament 2016 | 6.4% | not listed separately | 7.8% | in grey | 28.4% | 23.4% | in grey | 18.2% | 15.8% | 68.5% |
| Friedrichshain-Kreuzberg, State parliament 2021 | in grey | not listed separately | 7.6% | in grey | 32.3% | 23.6% | in grey | 15.1% | 21.4% | 78.8% |
| Friedrichshain-Kreuzberg, State parliament 2023 | in grey | not listed separately | 13.4% | in grey | 33.5% | 21.1% | in grey | 14.6% | 17.4% | 64.5% |
| Friedrichshain-Kreuzberg, State parliament 2026 | 6.0% | in grey | 8.8% | in grey | 20.7% | 44.2% | not listed separately | 9.5% | 10.7% | 77.3% |
| Lichtenberg, State parliament 2011 | not listed separately | not listed separately | 12.3% | in grey | 7.6% | 29.0% | 9.3% | 30.9% | 10.9% | 53.5% |
| Lichtenberg, State parliament 2016 | 19.0% | not listed separately | 12.0% | in grey | 7.7% | 26.9% | in grey | 19.7% | 14.6% | 62.9% |
| Lichtenberg, State parliament 2021 | 11.8% | not listed separately | 13.9% | 5.4% | 12.3% | 21.0% | in grey | 21.1% | 14.4% | 72.7% |
| Lichtenberg, State parliament 2023 | 13.8% | not listed separately | 25.4% | in grey | 11.7% | 18.6% | in grey | 16.3% | 14.3% | 59.6% |
| Lichtenberg, State parliament 2026 | 24.0% | 7.0% | 14.2% | in grey | 8.7% | 28.8% | not listed separately | 8.8% | 8.5% | 72.4% |
| Marzahn-Hellersdorf, State parliament 2011 | not listed separately | not listed separately | 17.5% | in grey | 5.6% | 27.4% | 8.8% | 28.2% | 12.6% | 51.0% |
| Marzahn-Hellersdorf, State parliament 2016 | 23.6% | not listed separately | 17.3% | in grey | in grey | 23.5% | in grey | 17.0% | 18.6% | 60.9% |
| Marzahn-Hellersdorf, State parliament 2021 | 16.2% | not listed separately | 20.9% | 5.2% | 6.7% | 17.9% | in grey | 19.7% | 13.4% | 69.3% |
| Marzahn-Hellersdorf, State parliament 2023 | 19.2% | not listed separately | 31.8% | in grey | 5.5% | 14.4% | in grey | 15.9% | 13.1% | 56.3% |
| Marzahn-Hellersdorf, State parliament 2026 | 34.4% | 7.4% | 16.4% | in grey | 5.3% | 20.2% | not listed separately | 7.9% | 8.5% | 69.6% |
| Mitte, State parliament 2011 | not listed separately | not listed separately | 17.9% | in grey | 22.5% | 11.0% | 10.5% | 28.7% | 9.6% | 55.9% |
| Mitte, State parliament 2016 | 9.9% | not listed separately | 13.5% | 6.6% | 21.3% | 17.6% | in grey | 21.5% | 9.5% | 62.6% |
| Mitte, State parliament 2021 | in grey | not listed separately | 12.3% | 7.1% | 26.2% | 17.5% | in grey | 18.8% | 18.0% | 73.6% |
| Mitte, State parliament 2023 | 5.6% | not listed separately | 20.2% | 5.1% | 27.2% | 15.8% | in grey | 16.6% | 9.4% | 59.0% |
| Mitte, State parliament 2026 | 8.9% | in grey | 14.1% | in grey | 18.2% | 35.8% | not listed separately | 11.1% | 11.9% | 71.5% |
| Neukölln, State parliament 2011 | not listed separately | not listed separately | 26.7% | in grey | 17.9% | 5.6% | 9.6% | 27.4% | 12.8% | 57.2% |
| Neukölln, State parliament 2016 | 13.8% | not listed separately | 17.8% | 5.7% | 16.2% | 13.6% | in grey | 23.3% | 9.6% | 63.2% |
| Neukölln, State parliament 2021 | 7.0% | not listed separately | 16.2% | 5.1% | 17.6% | 14.3% | in grey | 27.2% | 12.5% | 71.0% |
| Neukölln, State parliament 2023 | 7.5% | not listed separately | 28.1% | in grey | 18.5% | 13.1% | in grey | 21.3% | 11.5% | 57.8% |
| Neukölln, State parliament 2026 | 14.1% | in grey | 16.3% | in grey | 12.4% | 33.0% | not listed separately | 13.0% | 11.2% | 69.4% |
| Pankow, State parliament 2011 | not listed separately | not listed separately | 13.8% | in grey | 19.1% | 17.9% | 10.5% | 29.1% | 9.6% | 60.8% |
| Pankow, State parliament 2016 | 13.8% | not listed separately | 12.6% | in grey | 17.9% | 21.5% | in grey | 20.1% | 14.1% | 69.9% |
| Pankow, State parliament 2021 | 7.9% | not listed separately | 12.7% | 6.1% | 23.3% | 18.6% | in grey | 18.4% | 13.0% | 78.4% |
| Pankow, State parliament 2023 | 9.5% | not listed separately | 21.5% | in grey | 22.5% | 16.2% | in grey | 16.2% | 14.1% | 67.6% |
| Pankow, State parliament 2026 | 15.5% | in grey | 14.1% | in grey | 18.0% | 28.1% | not listed separately | 10.7% | 13.7% | 79.0% |
| Reinickendorf, State parliament 2011 | not listed separately | not listed separately | 38.4% | in grey | 13.6% | in grey | 6.7% | 28.1% | 13.2% | 62.1% |
| Reinickendorf, State parliament 2016 | 16.1% | not listed separately | 28.0% | 8.8% | 10.6% | 6.1% | in grey | 22.0% | 8.4% | 66.8% |
| Reinickendorf, State parliament 2021 | 9.3% | not listed separately | 28.3% | 8.0% | 13.3% | 5.4% | in grey | 23.5% | 12.3% | 72.9% |
| Reinickendorf, State parliament 2023 | 10.0% | not listed separately | 40.2% | in grey | 12.0% | in grey | in grey | 20.3% | 17.6% | 61.8% |
| Reinickendorf, State parliament 2026 | 19.0% | in grey | 27.0% | in grey | 11.1% | 16.1% | not listed separately | 14.2% | 12.6% | 71.2% |
| Spandau, State parliament 2011 | not listed separately | not listed separately | 34.2% | in grey | 12.5% | in grey | 7.3% | 31.7% | 14.3% | 58.0% |
| Spandau, State parliament 2016 | 16.6% | not listed separately | 24.6% | 7.6% | 8.7% | 6.6% | in grey | 27.4% | 8.5% | 63.5% |
| Spandau, State parliament 2021 | 10.0% | not listed separately | 26.6% | 7.8% | 11.6% | 5.6% | in grey | 25.7% | 12.8% | 70.6% |
| Spandau, State parliament 2023 | 11.0% | not listed separately | 39.1% | in grey | 10.1% | in grey | in grey | 21.5% | 18.3% | 56.9% |
| Spandau, State parliament 2026 | 21.3% | in grey | 24.4% | in grey | 9.0% | 16.3% | not listed separately | 15.2% | 13.8% | 68.5% |
| Steglitz-Zehlendorf, State parliament 2011 | not listed separately | not listed separately | 36.2% | in grey | 21.1% | in grey | 6.4% | 25.1% | 11.3% | 70.0% |
| Steglitz-Zehlendorf, State parliament 2016 | 11.0% | not listed separately | 25.5% | 11.8% | 16.8% | 6.9% | in grey | 21.6% | 6.3% | 74.5% |
| Steglitz-Zehlendorf, State parliament 2021 | 5.3% | not listed separately | 25.4% | 11.0% | 19.8% | 6.2% | in grey | 22.7% | 9.7% | 81.5% |
| Steglitz-Zehlendorf, State parliament 2023 | 5.7% | not listed separately | 35.4% | 8.0% | 18.4% | 5.5% | in grey | 20.2% | 6.9% | 71.1% |
| Steglitz-Zehlendorf, State parliament 2026 | 11.0% | in grey | 29.6% | in grey | 17.0% | 15.1% | not listed separately | 15.6% | 11.8% | 79.6% |
| Tempelhof-Schöneberg, State parliament 2011 | not listed separately | not listed separately | 28.9% | in grey | 23.0% | in grey | 7.8% | 27.1% | 13.2% | 64.1% |
| Tempelhof-Schöneberg, State parliament 2016 | 11.4% | not listed separately | 19.9% | 7.9% | 18.7% | 9.7% | in grey | 24.9% | 7.6% | 68.9% |
| Tempelhof-Schöneberg, State parliament 2021 | 5.8% | not listed separately | 20.6% | 7.3% | 22.0% | 9.7% | in grey | 22.6% | 11.8% | 77.0% |
| Tempelhof-Schöneberg, State parliament 2023 | 6.3% | not listed separately | 31.1% | in grey | 21.7% | 8.5% | in grey | 19.9% | 12.6% | 65.3% |
| Tempelhof-Schöneberg, State parliament 2026 | 12.1% | in grey | 21.1% | in grey | 17.7% | 23.2% | not listed separately | 14.4% | 11.5% | 75.6% |
| Treptow-Köpenick, State parliament 2011 | not listed separately | not listed separately | 15.9% | in grey | 10.7% | 23.0% | 9.3% | 28.9% | 12.2% | 60.9% |
| Treptow-Köpenick, State parliament 2016 | 20.5% | not listed separately | 12.9% | in grey | 9.1% | 22.6% | in grey | 20.4% | 14.5% | 68.1% |
| Treptow-Köpenick, State parliament 2021 | 11.9% | not listed separately | 14.2% | 6.6% | 13.0% | 18.7% | in grey | 21.6% | 13.9% | 76.8% |
| Treptow-Köpenick, State parliament 2023 | 13.9% | not listed separately | 26.0% | in grey | 12.2% | 15.9% | in grey | 18.0% | 14.0% | 64.0% |
| Treptow-Köpenick, State parliament 2026 | 23.7% | 6.2% | 15.2% | in grey | 9.8% | 26.6% | not listed separately | 10.3% | 8.2% | 76.1% |
Poster as PDF: House of Representatives Poster as PDF: Bundestag
Sources and rules
- AfD
- BSW
- CDU
- FDP
- Greens
- The Left
- Pirates
- SPD
- Grey: all parties below 5%
- Data: Amt für Statistik Berlin-Brandenburg, Wahlen Berlin, dl-de/by-2.0.
- Second vote (Zweitstimme) per district. Turnout: voters divided by eligible voters.
- Area equals share of the vote. Fixed party order, alphabetical.
- Grey: all parties under 5% and others.
- If a number doesn’t fit its block, it sits small next to it, with a line to the block. On a phone it sits tiny inside the block, for zooming in.
- Bundestag election 2021: the data probably includes parts of the February 2024 repeat election. I’m still checking.