Logo's politieke partijen

7.319.650 stemmen overzichtelijk op een kaartje tonen? Zo doe je dat.

We onderzochten hoe de achterban van de partijen in de nieuwe Eerste Kamer geografisch is verdeeld. Zo werd duidelijk dat de stemmen voor Forum van Democratie uit het hele land kwamen, terwijl die van bijvoorbeeld DENK juist veel geconcentreerder zijn. Maar hoe deden we dat?

Logo's politieke partijen

Het eerste wat we nodig hadden voor onze analyse was de complete uitslag van de Provinciale Statenverkiezingen van 20 maart op stembureauniveau. In april moesten we ons nog behelpen met data die we zelf hadden verzameld, en niet compleet was doordat niet alle gemeenten de data aanboden. Inmiddels is de complete data wél beschikbaar via het open dataportaal van de overheid.

Die data bestaat uit zo’n 355 EML XML-bestanden van alle Nederlandse gemeenten. Heel grondig, maar lastig om analyses mee te maken. Vandaar dat we alles eerst converteren naar een handzaam CSV-bestand met electiontool, dat we voor ons vorige onderzoek hadden ontwikkeld.

We combineren de data met die van Waar Is Mijn Stemlokaal en andere bestanden met postcodes, zodat we latitude en longitude kunnen vinden om te plotten op een kaartje. Ook versimpelen we de data en halen we er alleen de partijen uit die we echt nodig hebben. In deze analyse nemen we alleen de partijen mee die ook in de Eerste Kamer komen: lokale partijen vallen af. Ook zetten we de benaming uit de oorspronkelijke Kiesraad-data om naar kortere afkortingen. Er zijn twee lijstcombinaties die we samenvoegen: de Noord-Hollandse 50PLUS/Partij voor de Ouderen tellen we op bij 50PLUS. De Brabantse ChristenUnie-SGP tellen we op bij zowel CU als de SPG. De SGP blijft ook na die samenvoeging de enige partij die niet in alle provincies meedoet: in Groningen, Noord-Holland en Limburg kon er niet op ze gestemd worden.

De versimpelde data zetten we om naar een lijst met zeven kolommen: 

kolomnaam omschrijving
label het label van het stembureau
party de partij waar op gestemd is
total_votes het totaal aantal stemmen op het stembureau
votes het absolute aantal stemmen op de partij
bureau_zip, bureau_lat en bureau_lon om de data op een kaart te plotten

Met deze data kunnen we alle visualisaties maken. 

Om de visualisatie te maken waarin het aandeel van de 5% ‘fanbases’ (bureaus waar de 5% meeste stemmen vandaan komen) duidelijk wordt, zetten we de data om naar een tabel met deze kolommen:

kolomnaam omschrijving
party partij waar op gestemd is
votes totaal aantal stemmen
5p_votes totaal aantal stemmen wat is gegeven in de 5% van de stembureaus waar de meeste stemmen op de partij vandaan komen
5p_percentage percentage van de totale winst waar die 5% stembureaus voor verantwoordelijk is

De SGP is in dit lijstje dus de enige partij waar die totale 100% niet slaat op álle 9.311 stembureaus, maar alleen op de 6.810 waar ze daadwerkelijk meededen.

Deze nieuwe tabel zetten we om in een ‘stacked bar chart’ waar je de distributie goed kan zien:  

Voor de kaartjes gebruiken we een basiskaart in het TopoJSON-formaat. De visualisaties zijn te zwaar om goed in de browser te kunnen maken (wat we wel doen bij de stacked bar chart). Daarom maken we de kaartjes in Python met behulp van de Altair-datavisualisatie bibliotheek. Het eindresultaat is een serie plaatjes. De kaartjes zijn dus niet interactief.

Om goed te kunnen vergelijken, moeten de bolletjes op de kaarten van alle partijen gelijk in grootte zijn. Dat is lastig, want Altair schaalt de bolletjes op basis van de verdeling van de stemmen per partij. Eén kaartje van de PvdA (dat maximaal 284 stemmen kreeg op één bureau) ziet er daarom heel anders uit dan de SGP (dat er 1.033 kreeg op één bureau). Het kan vast makkelijker in Altair, maar we lossen dit op door het stembureau met de meeste stemmen van alle partijen (de SGP dus) in de dataset op te nemen van elke partij, maar dat bolletje buiten Nederland te plotten, ergens in het Verenigd Koninkrijk. Die zie je dus niet terug op het uiteindelijke kaartje. Weet jij wel hoe we dat netjes zouden kunnen doen? Het hele project, inclusief alle data en Jupyter Notebooks staat op ons Github-account. Doe er je voordeel mee.

Schrijf je in voor de nieuwsbrief

Blijf op de hoogte