Hallo liebe Python-Interessierte!
Im heutigen Python-Tutorial in der Kategorie Python Matplotlib zeige ich euch Schritt-für-Schritt, wie ihr mit Matplotlib Liniendiagramme (Matplotlib Plot) erstellt und wie ihr die Diagramme euren eigenen Anforderungen anpassen könnt.
Übrigens: Ihr könnt auch mein YouTube-Video zu diesem Blogartikel anschauen:
Matplotlib dient zum Erstellen von Graphen und zur professionellen Datenvisualisierung. Es ergänzt damit die beiden Python-Bibliotheken Numpy und SciPy. Matplotlib ist zwar einfach in der Benutzung und erlaubt neuen Usern einen leichten Einstieg. Nichtsdestotrotz eignet sich Matplotlib hervorragend, um Graphen auf hohem Niveau zu erstellen.
Die in Python importierbare Bibliothek erlaubt es, mittels wenigen Code-Zeilen individuelle und anpassbare Charts zu erstellen. Beispiele für Visualisierungen sind:
- Liniendiagramme
- Balkendiagramme
- Scatterplots
- Kuchendiagramme
- Konturdiagramme
- 3D-Charts
Falls noch nicht geschehen, ladet euch Python unter https://www.python.org herunter. Unter dem Reiter „Downloads“ findet ihr die passende und aktuelle Version abhängig von eurem Betriebssystem. Ich arbeite in der Entwicklungsumgebung Anaconda mit dem Jupyter Notebook. Die Schritte zur Installation und Einrichtung von Anaconda sind im folgenden Links sehr gut beschrieben: https://fizban05.rz.tu-harburg.de/itbh-inf-wise201718/veranstaltungsskript-inf-wise201718/material/sitzungsmaterial/einrichtung-byod-python.html . Da Matplotlib nicht im Paket der Standardbibiliothek enthalten ist, müsst ihr es importieren. Das geht sehr bequem über das Ausführen des Befehls pip Install matplotlib in der Kommandozeile. Falls Probleme bei der Installation bestehen, empfehle ich die Homepage der Matplotlib-Dokumentation zu besuchen: https://matplotlib.org/users/installing.html.
Erstelle deinen eigenen Matplotlib Plot in Python
Lasst uns mit dem eigentlichen Tutorial beginnen. Wir wollen das folgende Liniendiagramm gemeinsam erstellen:

Matplotlib Plot Beispiel
Wie ihr erkennen könnt, zeigt das Diagramm den Zusammenhang zwischen dem durchschnittlichen Jahreseinkommen und dem Alter von Arbeitnehmern. Das obige Beispiel wurde auf Basis von Daten zu den durchschnittlichen Jahreseinkommen von der Studie Gehaltsbiografie 2018 erstellt. Die zugehörigen x- und y-Daten für das Alter und das Jahreseinkommen habe ich von der Studie übernommen.
Am Ende des Tutorials seid ihr im Stande, die obige Abbildung selbst zu erstellen und an eure Daten anzupassen.
Los geht’s: Ich erkläre euch jetzt Schritt-für-Schritt, wie ihr mit Python in Matplotlib den Plot erstellt.
Import des Moduls/der Bibliothek
from matplotlib import pyplot as plt
Import der x- und y-Daten
# Definition der x-und y-Variablen. Die Daten werden in einer Python-Liste gespeichert.
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
Plotten/Ausgabe der Grafik
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]# Plot-Funktion(Übergabe der x- und y-Variable)
plt.plot(x_alter, y_brutto_durchschnitt)
plt.show()

Plot der bisherigen Grafik
Zweite Datenreihe hinzufügen
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
plt.plot(x_alter, y_brutto_durchschnitt)# Hinzufügen von zweitem Datenset (y_durchschnitt_manager)
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
plt.plot(x_alter, y_durchschnitt_manager)plt.show()

Matplotlib Plot Ausgabe
Einfügen von Achsenbeschriftungen
Falls ihr einem Fremden diese Grafik zeigt, wird er euch wahrscheinlich nur fragend anschauen. Es fehlen noch viele wichtige Informationen zur Grafik. Kümmern wir uns zunächst um die Beschriftungen der x- und y-Achse.
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
plt.plot(x_alter, y_brutto_durchschnitt)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
plt.plot(x_alter, y_durchschnitt_manager)# Festlegung der Achsenbeschriftungen
plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)plt.show()
Einfügen eines Titels für Diagramm
Jetzt sind unsere Achsen mit den entsprechenden Bezeichnungen versehen. Natürlich benötigen wir auch einen aussagekräftigen Titel für unsere Grafik.
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
plt.plot(x_alter, y_brutto_durchschnitt)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
plt.plot(x_alter, y_durchschnitt_manager)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)# Hinzufügen des Titels
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)plt.show()

Matplotlib Plot der bisherigen Daten
Hinzufügen von Labels (Zuordnungen der Linien zu Datengruppe)
Bisher haben wir zwar zumindest einen Überblick darüber, worum es im Diagramm geht und dass wir eine Gehaltsentwicklung betrachten. Leider fehlt noch eine klare Zuordnung, welche der beiden Kurven sich auf die Durchschnittseinkommen aller Personen und welche sich auf die Managementgehälter (y_durchschnitt_manager) bezieht.
Das ändern wir jetzt, indem wir sogenannte Labels der Funktion plt.plot übergeben:
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
# Hinzufügen von Linien-Beschriftung (Label)
plt.plot(x_alter, y_brutto_durchschnitt, label=’Durchschnitt‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
# Hinzufügen von Linien-Beschriftungen (Label)
plt.plot(x_alter, y_durchschnitt_manager, label=’Manager‘)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)# WICHTIG: Befehl zum Einblenden der Labels in Grafik nicht vergessen
plt.legend()plt.show()

Matplotlib Plot Labels
Design der Plots ändern
Jetzt kommen wir an den Punkt, wo wir das Design und weitere Eigenschaften unserer Plots ändern. Um dies zu tun, gibt es eine Vielzahl an Möglichkeiten. Ich möchte euch anhand von einfachen Befehlen zeigen, wie ihr die
- Farbe
- Markierung
- Linienart/den Linienstil
bequem ändert und nach euren Vorstellungen (oder denen eures Professors/Lehrstuhls/Lehrers 🙂 ) anpasst.
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
# Formatieren der Linien: Ändern der Farbe, der Linienart, Hinzufügen von Markierungen/Linien-Punkten
plt.plot(x_alter, y_brutto_durchschnitt, color=’g‘, marker=‘.‘, linestyle=‘–‚, label=’Durchschnitt‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
# Formatieren der Linien: Ändern der Farbe, der Linienart, Hinzufügen von Markierungen/Linien-Punkten
plt.plot(x_alter, y_durchschnitt_manager, color=’r‘, marker=’o‘, linestyle=‘-‚, label=’Manager‘)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)plt.legend()
plt.show()

Matplotlib Tutorial: Design der Plots ändern
Wie bereits erwähnt, habe ich nur an wenigen Stellschrauben der Design-Änderung gedreht. In Matplotlib stehen aber noch eine Fülle an Änderungen der Farbe, Markierungen, Linien,… zur Verfügung.

Matplotlib Dokumentation
Lest mehr in der ausführlichen Dokumentation auf:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.py

Matplotlib Tutorial: Ändern des Designs
Testet euch auf alle Fälle durch und verändert die übergebenen Werte in der plt.plot-Funktion nach den entsprechenden Keywords (color, marker, linestyle). Vielleicht gefällt euch eine gepunktete Magenta-Linie mit Pentagon-Marker, wer weiß…
ACHTUNG: Vielleicht habt ihr festgestellt, dass laut der Dokumentation nur wenige Farben für das Keyword color zur Verfügung stehen. Mhm. Es müsste doch eine Möglichkeit geben, um auch beliebige individuelle Farben für die Grafiken in Matplotlib zu verwenden, stimmts?
Gute Nachricht: Die Möglichkeit gibt es auch und sie ist auch sehr einfach. Ihr könnt nämlich sämtliche RGB (Rot Grün Blau) – Werte in Hexa-Farbwerte umrechnen und diese Hexa-Farbwerte (z. B. #6a30c5) der plt.plot-Funktion übergeben. Ich empfehle hierfür die folgende Seite zur bequemen Umwandlung der RGBs: https://www.color-hex.com/
Die Umrechnung geht dann folgendermaßen:
1) Ihr wählt mit dem Farbregler eine beliebige Farbe eurer Wahl aus und
2) kopiert euch den Color-Hex-Code (z. B. #1b5ccc). Dieses Kürzel fügt ihr dann nach dem keyword color in euren Matplotlib-Code ein. Fertig!!!

1. Auswahl der Farbe bei Color-Hex-Code

2. Kopieren eures erhaltenen Hex-Codes
Im Code sieht das Ganze dann beispielsweise folgendermaßen aus.
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
# Verwende die Farben deiner Wahl und wandle beliebige RGB-Werte in Hex-Farbwerte um: https://www.color-hex.com/
plt.plot(x_alter, y_brutto_durchschnitt, color=’#6a30c5′, marker=‘,‘, linestyle=‘–‚, label=’Durchschnitt‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
# Verwende die Farben deiner Wahl und wandle beliebige RGB-Werte in Hex-Farbwerte um: https://www.color-hex.com/
plt.plot(x_alter, y_durchschnitt_manager, color=’#cdeabe‘, marker=’o‘, linestyle=‘:‘, label=’Manager‘)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)plt.legend()
plt.show()

Matplot Tutorial: Weitere Grafik
Ändern der Liniendicke
Falls ihr (wie ich) nicht mit der besten Sehkraft gesegnet seid, stört euch möglicherweise, dass die Linien sehr dünn sind. Das liegt daran, dass der Defaultwert (der voreingestellte Wert) der Liniendicke auf 1 gewählt wird. Ich zeige euch, wie ihr mit nur einem keyword (linewidth) die Dicke ändern könnt.
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
# Ändern der Liniendicke (Default-Einstellung auf 1)
plt.plot(x_alter, y_brutto_durchschnitt, color=’#6a30c5′, marker=‘,‘, linestyle=‘–‚, linewidth=’4′, label=’Durchschnitt‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
# Ändern der Liniendicke (Default-Einstellung auf 1)
plt.plot(x_alter, y_durchschnitt_manager, color=’#cdeabe‘, marker=’o‘, linestyle=‘:‘, linewidth=’7′, label=’Manager‘)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)plt.legend()
plt.show()
Das Ergebnis sieht dann so aus:

Matplotlib Plot: Dickere Linien mit linewidth
Meine Empfehlung: Falls ihr noch keinerlei Kenntnisse in der Python-Programmierung habt und unbedingt Python lernen möchtet: Startet durch mit dem Online-Kurs Python Programming Bootcamp von Derek Banas. Ich habe den Kurs auch besucht und durchgearbeitet. Ich kann euch diesen Kurs wirklich ans Herz legen, weil er meiner Meinung nach der beste und einer der umfangreichsten Python-Kurse bei Udemy ist. Der Kurs dauert über 20 Stunden und bietet einen qualitativ hochwertigen Einstieg in die (objektorientierte) Programmierung mit Python. Derek hat seine Videos so gestaltet, dass er ohne lange Umschweife die wichtigsten Inhalte präzise an Hand von Codebeispielen erklärt. Er bettet viele, interaktive Übungsaufgaben ein, sodass ihr euren Fortschritt regelmäßig überprüfen könnt.
Neben Grundlagen wie Funktionen, Klassen, Schleifen, usw. werdet ihr ebenfalls lernen, wie SQLite funktioniert und wie ihr grafische Benutzeroberflächen (GUIs) programmiert. Außerdem lernt ihr das Webframework Django kennen.
Also nichts wie los, das ist eure Chance bei Python so richtig durchzustarten! Ich bin mir sicher, dass ihr nicht enttäuscht werdet und eure Lernfortschritte durch die Decke gehen werden! Klickt direkt auf das Bild, das euch zum Kurs bringt und sichert euch den tollen Udemy-Kurs*:
Erstellt ein Gitternetz
Die Aufgabenstellung erfordert es oft, ein Gitter zur besseren Visualisierung und Übersichtlichkeit hinzuzufügen. Die Umsetzung in Matplotlib ist wieder sehr intuitiv – ihr könnt das bewerkstelligen mit nur einer Zeile Code:
from matplotlib import pyplot as plt
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
plt.plot(x_alter, y_brutto_durchschnitt, color=’#6a30c5′, marker=‘,‘, linestyle=‘–‚, linewidth=’4′, label=’Durchschnitt‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
plt.plot(x_alter, y_durchschnitt_manager, color=’#cdeabe‘, marker=’o‘, linestyle=‘:‘, linewidth=’7′, label=’Manager‘)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)plt.legend()
# Hinzufügen eines Gitternetzes:
plt.grid(True)plt.show()

Matplotlib Plot: Grid-Layout hinzufügen
Na, langsam wird das doch eine runde Sache, oder was meint ihr? Eigentlich könnte ich hier das Tutorial beenden. Aber ich möchte euch nicht folgende spannende und coole Funktionalitäten von matplotlib vorenthalten.
Frisiere deine Graphik mit einem Style
Wie ich bereits erwähnt habe, liefert Matplotlib viele Funktionalitäten und Designs standardmäßig gleich mit. Das ist ideal für neue Nutzer, da sie ohne großen Aufwand bereits hochwertige Grafiken erstellen können. Eine dieser „Hacks“ rund um das Design eurer Diagramme ist der Folgende:
Ihr könnt euch alle verfügbaren Stile bei Matplotlib auf der Console ausgeben lassen und euch dann für ein passendes Design entscheiden. Die Abfrage läuft folgendermaßen:
print(plt.style.available)
Auf der Konsole erhaltet ihr eine Übersicht (eine Liste mit Strings) mit allen möglichen Designs a la :

Matplotlib Plot: Styles
Wie ihr sehen könnt, gibt es eine große Design-Auswahl und für jeden sollte sich etwas finden lassen. Probiert euch am besten mal durch und schaut euch beispielsweise den ‚fivethirtyeight‚ an. Ihr fügt den Style folgendermaßen im Code ein:
from matplotlib import pyplot as plt
# Auswahl und Festlegung auf Design
plt.style.use(‚fivethirtyeight‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
plt.plot(x_alter, y_brutto_durchschnitt, color=’#6a30c5′, marker=‘,‘, linestyle=‘–‚, linewidth=’4′, label=’Durchschnitt‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
plt.plot(x_alter, y_durchschnitt_manager, color=’#cdeabe‘, marker=’o‘, linestyle=‘:‘, linewidth=’7′, label=’Manager‘)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)plt.legend()
plt.grid(True)
plt.show()
Den folgenden Graph habe ich z. B. im Style ‚_classic_test‘ erstellt:

Matplotlib: Style _classic_test
Bringt Humor ins Spiel
Falls eure Präsentation keinen wissenschaftlichen Ansprüchen genügen muss und durchaus humorvoll gestaltet sein darf, dann ist der folgende Tipp für euch: Bindet mit nur einem Funktionsaufruf das Sketch-style drawing (dokumentiert unter https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.xkcd.html) ein und fügt einen Comic-Style hinzu:
from matplotlib import pyplot as plt
# Füge einen Comic-Style hinzu (via function) = „Sketch-style drawing“
plt.xkcd()
x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_brutto_durchschnitt = [37109, 45109, 51712, 55495, 57155, 57977, 58094, 58229]
plt.plot(x_alter, y_brutto_durchschnitt, color=’#6a30c5′, marker=‘,‘, linestyle=‘–‚, linewidth=’4′, label=’Durchschnitt‘)x_alter = [25, 30, 35, 40, 45, 50, 55, 60]
y_durchschnitt_manager = [73618, 85483, 95888, 108474, 119679, 124509, 127512, 133901]
plt.plot(x_alter, y_durchschnitt_manager, color=’#fbb42e‘, marker=’o‘, linestyle=‘:‘, linewidth=’7′, label=’Manager‘)plt.xlabel(‚Alter‘)
plt.ylabel(‚Durchschnittliches Jahreseinkommen‘)
plt.title(‚Durchschnittliches Jahreseinkommen in Bezug auf Alter‘)plt.legend()
plt.grid(True)
plt.show()

Matplotlib Tutorial: Comic-Style
————————————————————————————————————————————
Tolle Bücher und Kurse* zum Python lernen (speziell für Programmier-Einsteiger)
Meine Empfehlung: Falls ihr noch keinerlei Kenntnisse in der Python-Programmierung habt oder aber von einer anderen Programmiersprache umsteigen möchtet: Startet durch mit dem Online-Kurs Python Programming Bootcamp von Derek Banas. Ich habe den Kurs auch besucht und durchgearbeitet. Ich kann euch diesen Kurs wirklich ans Herz legen, weil er meiner Meinung nach der beste und einer der umfangreichsten Python-Kurse bei Udemy ist. Der Kurs dauert über 20 Stunden und bietet einen qualitativ hochwertigen Einstieg in die (objektorientierte) Programmierung mit Python. Derek hat seine Videos so gestaltet, dass er ohne lange Umschweife die wichtigsten Inhalte präzise an Hand von Codebeispielen erklärt. Er bettet viele, interaktive Übungsaufgaben ein, sodass ihr euren Fortschritt regelmäßig überprüfen könnt.
Neben Grundlagen wie Funktionen, Klassen, Schleifen, usw. werdet ihr ebenfalls lernen, wie SQLite funktioniert und wie ihr grafische Benutzeroberflächen (GUIs) programmiert. Außerdem lernt ihr das Webframework Django kennen.
Also nichts wie los, das ist eure Chance bei Python so richtig durchzustarten! Ich bin mir sicher, dass ihr nicht enttäuscht werdet und eure Lernfortschritte durch die Decke gehen werden! Klickt direkt auf das Bild, das euch zum Kurs bringt und sichert euch den tollen Udemy-Kurs*:
————————————————————————————————————————————
Vielen Dank für euer Interesse. Bis zum nächsten Artikel auf
Alle mit * gekennzeichneten Links sind Affiliate-Links.
Pingback:Matplotlib Legend und x-y-ticks in Matplotlib verbessern
Pingback:Interessiert an Python Programmierung und Matplotlib Plots?