Die Bibliothek Bokeh hatte ich bereits in einem älteren Artikel kurz vorgestellt. Seinerzeit ging es um die Darstellung der Anzahl der Corona-Infizierten in Kiel als Liniendiagramm. In diesem Tutorial werfen wir hingegen einen Blick auf Balkendiagramme, genauer gesagt, auf die Visualisierung der Stimmen (in Prozent), die die Parteien bei der Bundestagswahl 2021 erhalten haben.
Voraussetzung ist, dass bokeh auf Eurem System installiert ist:
$ pip install bokeh # Windows
$ pip3 install bokeh # Linux, macOS
Den Anfang machen die Importanweisungen:
from bokeh.plotting import ColumnDataSource
from bokeh.plotting import figure
from bokeh.plotting import show
from bokeh.plotting import output_file
from bokeh.transform import factor_cmap
Falls Ihr den ersten Blogbeitrag zu bokeh gelesen habt, werdet Ihr wissen, dass für die Festlegung der Datenquelle die Funktion ColumnDataSource
benötigt wird. Die Funktion figure
stellt die Kernkomponente für die Erzeugung der Grafik bereit. So werden hierüber verschiedene Elemente für die Visualisierung bereitgestellt. Mit show
wird die Grafik (im Browser) angezeigt und über output_file
die Datei bzw. der Dateiname definiert. Während man sich bei den übrigen Importen ungefähr denken kann, wofür sie notwendig sind, erschließt sich dies bei factor_cmap
nicht ohne Weiteres. Diese Funktion ermöglicht die Zuordnung von Farben zu Werten (hier die Parteien).
Als nächstes legen wir den Dateinamen fest:
output_file("bundestagswahl_2021.html")
Es folgen die Werte (Parteien, Stimmen) sowie die zu verwendenden Farben. Außerdem wird die Datenquelle definiert.
german_parties = ["Union", "SPD", "AfD", "FDP", "Die Linke", "Grüne", "Sonstige"]
counts = [24.1, 25.7, 10.3, 11.5, 4.9, 14.8, 8.7]
palette = ["#615747", "#EC5F52", "#73C0E9", "#ECBF46", "#AC65AB", "#7CC35F", "#D4D4CA"]
source = ColumnDataSource(data=dict(german_parties=german_parties, counts=counts))
Dann kommen wir zum Code für die Erzeugung des Balkendiagramms (vbar
). Mit show(plt)
wird zum Schluss die Grafik angezeigt.
plt = figure(
x_range=german_parties,
width=800,
height=400,
toolbar_location=None,
title="Bundestagswahl 2021",
)
plt.vbar(
x="german_parties",
top="counts",
width=0.9,
source=source,
legend_field="counts",
line_color="white",
fill_color=factor_cmap("german_parties", palette=palette, factors=german_parties),
)
plt.xgrid.grid_line_color = None
plt.y_range.start = 0
plt.y_range.end = 40
plt.legend.orientation = "horizontal"
plt.legend.location = "top_center"
show(plt)
Es sollte sich der Browser öffnen und folgendes Balkendiagramm erscheinen: