Daten mit Python und Plotly visualisieren

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"},
)
EU Elections - Voter Participation in Kiel

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)