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:
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:
Weitere Code-Beispiele findet Ihr in der Dokumentation zu Matplotlib.
Weitere Beispiele
- Datenvisualisierung mit Python – Zweitstimmen der Union bei Bundestagswahlen 1949-2021
- Python, Pandas und Verkehrsunfälle in Kiel
- Ehescheidungen in Kiel
- Güterumschlag im Kieler Hafen
- Jupyter Notebook – Liniendiagramm erstellen
- Jupyter Notebook – CSV-Datei & Liniendiagramm