Datenvisualisierung mit Python – Zweitstimmen von Union und SPD

Dieser Artikel ist eine Fortsetzung des Tutorials zur Visualisierung der Zweitstimmen der Union bei den Bundestagswahlen 1949-2021.

Im zweiten Teil möchte ich zeigen, wie dieses Liniendiagramm um einen Datensatz erweitert werden kann. Anstatt nur die Entwicklung der Zweitstimmen der Union zu zeigen, kommen nun die Stimmen der SPD hinzu. Als Datenquelle nutze ich wiederum die entsprechende Internetseite des Deutschen Bundestags.

Die CSV-Datei, die als Datenquelle dient, sieht — gekürzt — so aus:

Jahr;Union;SPD
1949;31.0;29.2
1953;45.3;28.8
1957;50.2;31.8
[…]

Die Jahreswerte müssen der X-Achse, die Zweitstimmen der Y-Achse zugewiesen werden. Für den Code bedeutet dies — und das ist der Unterschied zum vorherigen Beispiel —, dass zwei Spalten zugewiesen werden müssen. Genauer gesagt werden zwei (Pandas-)DataFrames zugewiesen:

y_union = df["Union"]
y_spd = df["SPD"]

Außerdem kommt eine zweite plot-Methode hinzu:

plt.plot(y_spd, "*-", markersize=6, linewidth=1, color="r")

So sieht der Code wie folgt aus, wobei ich die Unterschiede kommentiert habe:

import pandas as pd
import matplotlib.pyplot as plt

plt.style.use("seaborn-darkgrid")

csv_data = "zweitstimmen-union-spd.csv"
df = pd.read_csv(csv_data, sep=";")

fig, ax = plt.subplots()

x = df["Jahr"]
y_union = df["Union"]  # <- geändert
y_spd = df["SPD"]  # <- neu

plt.title("Zweistimmen von Union und SPD\n Bundestagswahlen 1949-2021", size="x-large")
plt.ylabel("Zweitstimmen (in %)", size="large")
plt.xlabel("Jahr", size="x-large")

ax.set_xticks(range(len(x)))
ax.set_xticklabels(x, rotation="vertical")

plt.plot(y_union, "*-", markersize=6, linewidth=1, color="b")
plt.plot(y_spd, "*-", markersize=6, linewidth=1, color="r")  # <- neu

plt.show()

Im Ergebnis führt dies zu folgendem Liniendiagramm:

Zweitstimmen von Union und SPD bei den Bundestagswahlen

Beschriftung hinzufügen

Gestalten wir dieses Liniendiagramm interessanter und fügen eine Beschriftung hinzu. Genauer gesagt, einen Pfeil, der den Beginn der ersten Rot-Grünen-Koalition kennzeichnet, ergänzt um einen Text.

Direkt vor

plt.show()

muss dazu folgender Code hinzugefügt werden:

ax.annotate('Erste Rot-Grüne-Koalition',
        xy=(13, 41), xycoords='data',
        xytext=(0.8, 0.95), textcoords='axes fraction',
        arrowprops=dict(facecolor='green', shrink=0.05),
        horizontalalignment='right', verticalalignment='top')

Unser Liniendiagramm sieht jetzt folgendermaßen aus:

Zweitstimmen von Union und SPD bei den Bundestagswahlen

Weitere Code-Beispiele findet Ihr in der Dokumentation zu Matplotlib.

Weitere Beispiele