Wenn es um die Visualisierung von Daten mit Python geht, wird man häufig an Matplotlib denken. Damit ist es möglich, Diagramme für den lokalen Einsatz zu erstellen. In diesem Blog hatte ich bereits einige Beispiele dazu veröffentlicht. Darüber hinaus existieren aber noch weitere Frameworks. Eines davon möchte ich in diesem Artikel kurz vorstellen: Plotly. Der Unterschied zu Matplotlib besteht, darin, dass mit Plotly Diagramme erstellt werden können, die für eine Webseite geeignet sind.
Die Installation erfolgt via pip
:
$ pip install plotly # Windows
$ pip3 install plotly # Linux, macOS
Zusätzlich muss pandas
installiert sein. Andernfalls wird es zu einer Fehlermeldung kommen.
$ pip install pandas # Windows
$ pip3 install pandas # Linux, macOS
In diesem Beispiel geht es um das Erstellen eines Liniendiagramms. Als Datensatz verwende ich „Europawahlen in Kiel“, bereitgestellt vom Open-Data-Portal der Stadt Kiel. Dabei habe ich aus der entsprechenden CSV-Datei nur die Werte zur Wahlbeteiligung herausgesucht.
Zunächst ist es erforderlich plotly
oder genauer gesagt plotly.express
zu importieren:
import plotly.express as px
Es folgen die Werte (Jahre und Wahlbeteiligung), also zwei Listen, die den Variablen jahre
und wahlbeteiligung
zugewiesen werden:
jahre = [1979, 1984, 1989, 1994, 1999, 2004, 2009, 2014]
wahlbeteiligung = [115684, 96752, 104815, 93879, 63185, 62414, 61611, 75741]
Für die Jahreszahlen wird der Datentyp int
verwendet, Strings wären aber auch möglich.
Als nächstes kommt auch schon plotly.express
zum Einsatz:
fig = px.line(
x=jahre,
y=wahlbeteiligung,
title="Wahlbeteiligung in Kiel (EU-Wahlen)")
Mit folgender Code-Zeile wird dann eine HTML-Datei generiert, wobei auto_open=True
dazu führt, dass das Diagramm bzw. die HTML-Datei sofort im Browser angezeigt wird:
fig.write_html("eu-wahlen.html", auto_open=True)
Die X- und die Y-Achse lassen sich durch das Hinzufügen von Labels auch beschriften:
fig = px.line(
x=jahre,
y=wahlbeteiligung,
title="Wahlbeteiligung in Kiel (EU-Wahlen)",
labels={"x": "Jahre", "y": "Wahlbeteiligung"},
)
Zum Schluss nochmal der gesamte Code:
import plotly.express as px
jahre = [1979, 1984, 1989, 1994, 1999, 2004, 2009, 2014]
wahlbeteiligung = [115684, 96752, 104815, 93879, 63185, 62414, 61611, 75741]
fig = px.line(
x=jahre,
y=wahlbeteiligung,
title="Wahlbeteiligung in Kiel (EU-Wahlen)",
labels={"x": "Jahre", "y": "Wahlbeteiligung"},
)
fig.write_html("eu-wahlen.html", auto_open=True)