Zum Inhalt springen

Was ist Matplotlib?

  • Python

Matplotlib ist eine der beliebtesten Bibliotheken in Python und eignet sich besonders für die Visualisierung von Daten in den unterschiedlichsten Formen, wie zum Beispiel Linien– oder Balkendiagramme, aber auch komplexere Varianten. In diesem Beitrag schauen wir uns genauer an, wie die Bibliothek aufgebaut ist und welche grundlegenden Funktionen man als Nutzer kennen sollte, um das Maximale rausholen zu können. Dazu betrachten wir ein paar konkrete Beispiele an und zeigen auch, wie sich die Diagramme aussagekräftig gestalten lassen. 

Was ist Matplotlib?

Matplotlib ist eine leistungsfähige Bibliothek in Python, welche zur Datenvisualisierung genutzt werden kann. Mit ihrer Hilfe ist es möglich, die Daten in Form von Diagrammen, Grafiken oder auch Plots darzustellen, indem sie eine breite Palette von Liniendiagrammen bis hin zu komplexen mehrdimensionalen Visualisierungen bietet. Sie wurde 2003 von John Hunter entwickelt und wird heutzutage von einer großen Gemeinschaft von Entwicklern ständig gepflegt und weiterentwickelt. 

In der Praxis wird sie vor allem für die Datenanalyse und in wissenschaftlichen Publikationen eingesetzt und bietet darüber hinaus jedoch auch die Möglichkeit, interaktive Dashboards zu gestalten. Durch die hohe Flexibilität der Bibliothek eignet sie sich nicht nur für schnelle, explorative Analysen, sondern auch für hochwertige Abbildungen, die für Fachartikel oder Präsentationen genutzt werden können. 

In Python gibt es eine Vielzahl von Modulen, welche für die Visualisierung von Daten verwendet werden können. Für viele dieser Bibliotheken bildet Matplotlib die Basis, auf der sie aufbauen. Zum Beispiel die bekannte Bibliothek Seaborn, welche einige statistische Auswertungen ermöglicht, baut genauso auf Matplotlib auf, wie die grundlegenden Pandas Plot-Funktionen, die bereits integriert sind. 

Wie kann man Matplotlib installieren?

Die Matplotlib Bibliothek ist nicht standardmäßig in Python enthalten, sondern muss vor der ersten Nutzung einmalig installiert werden. Abhängig von der Arbeitsumgebung kann man dafür entweder pip nutzen: 

pip install matplotlib

Oder man installiert es mit Conda:

conda install matplotlib

Anschließend kann man das Modul einfach nutzen, indem man es am Anfang des Codes importiert. Dabei hat sich die folgende Schreibweise zum Import in den letzten Jahren durchgesetzt: 

import matplotlib.pyplot as plt

Wie funktioniert das Figure-Axes-Plot Modell in Matplotlib?

Matplotlib basiert auf einem sogenannten objektorientierten Ansatz, welcher es erzeugt, dass Diagramme nicht irgendwo gezeichnet werden, sondern einer klaren Hierarchie von Objekten folgen. Zu den wichtigsten Elementen zählen: 

  • Das Figure ist der gesamte Bereich, in dem das Diagramm später ausgegeben wird. Man kann es sich wie eine Leinwand vorstellen, auf der eines oder mehrere Diagramme platziert werden können. Auf dieser Leinwand lässt sich ein Raster definieren, in dem dann wiederum die Diagramme frei platziert werden können. 
  • Die Axes wiederum sind die eigentlichen Diagrammbereiche innerhalb eines Figures und bestehen aus ihren eigenen x- und y-Achsen. Bei 3D-Plots kann es außerdem noch eine weitere Z-Achse geben. 
  • Innerhalb der Axes gibt es schließlich die Objekte xaxis und yaxis, welche die Formatierungen für die einzelnen Diagramme übernehmen. Darüber kann man beispielsweise die Skalierung, die Ticks oder die Beschriftungen an einzelnen Achsen steuern. 
  • Die Plot-Elemente enthalten dann die Darstellung der Daten in ihrer jeweiligen Form, wie zum Beispiel Linien- oder Balkendiagramme. 

In dem folgenden Beispiel erstellen wir ein Figure mit zwei Diagrammbereichen (Axes), die nebeneinander angeordnet sind. Innerhalb dieser Bereiche wird einmal ein Liniendiagramm und einmal ein Balkendiagramm gezeichnet. 

import matplotlib.pyplot as plt

# Figure with two diagrams next to each other
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))

# First diagram (ax1)
ax1.plot([1, 2, 3], [1, 4, 9], color="blue", marker="o")
ax1.set_title("Squared Values")
ax1.set_xlabel("x")
ax1.set_ylabel("y")

# Second diagram (ax2)
ax2.bar(["A", "B", "C"], [5, 7, 3], color="orange")
ax2.set_title("Bar Chart")
ax2.set_ylabel("Appearances")

plt.suptitle("Example with several axes in one figure")
plt.tight_layout()
plt.show()

Durch dieses Modell ergeben sich einige Vorteile in der Arbeit mit Diagrammen. Zum einen hat man eine hohe Flexibilität, da man die Anordnung der Diagramme im Figure einfach individualisieren kann und zum Beispiel ein 2×2 Raster für Vergleiche erstellen kann. Außerdem lässt sich jedes Axes-Objekt einfacher kontrollieren und es können unabhängige Konfigurationen von Titeln oder Labels vorgenommen werden. Schließlicht ist der Code auch sauber, da er durch den objektorientierten Ansatz sauber strukturiert und leichter erweiterbar ist. 

Wie können verschiedene Diagrammarten konkret umgesetzt werden?

Matplotlib bietet eine Vielzahl von grundlegenden Plot-Typen, welche in der Datenanalyse besonders häufig zum Einsatz kommen. In diesem Abschnitt schauen wir uns einige der bekanntesten Diagrammtypen an und sehen, wie sie in Matplotlib konkret umgesetzt werden können. 

Ein Liniendiagramm eignet sich besonders, um zeitliche Verläufe oder kontinuierliche Funktionen darzustellen. In unserem Beispiel schauen wir uns den Temperaturverlauf über mehrere Tage einer Woche hinweg an. Dazu erstellen wir ein Figure mit einem einzigen Subplot und erzeugen das Liniendiagramm mit der Funktion .plot(). Die Werte für die x-Achse übergeben wir dabei als Python-Liste zuerst und als zweites Argument die Werte für die y-Achse. Anschließend können wir noch die Achsenbeschriftungen und den Titel individualisieren, bevor wir schließlich das Diagramm mithilfe von plt.show() ausgeben. 

import matplotlib.pyplot as plt

# Example: Temperature over 7 days
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
temperature = [12, 14, 15, 17, 19, 22, 20]

fig, ax = plt.subplots()
ax.plot(days, temperature, marker="o", color="blue")
ax.set_title("Temperature Over a Week")
ax.set_xlabel("Day")
ax.set_ylabel("Temperature (°C)")
plt.show()

Ein sogenannter Scatter-Plot erstellt Punktewolken, also ein Diagramm, welches jeden Datenpunkt als einzelnen Punkt anzeigt, wodurch Zusammenhänge und Korrelationen zwischen mehreren Variablen ersichtlich werden. Das grundlegende Vorgehen ist hierbei dasselbe wie beim Liniendiagramm mit dem Unterschied, dass dafür die Funktion .scatter() verwendet wird. 

import matplotlib.pyplot as plt

# Example: Study hours vs. test scores
study_hours = [1, 2, 3, 4, 5, 6, 7]
scores = [52, 54, 58, 62, 68, 75, 80]

fig, ax = plt.subplots()
ax.scatter(study_hours, scores, color="green")
ax.set_title("Study Hours vs. Test Scores")
ax.set_xlabel("Study Hours")
ax.set_ylabel("Test Score")
plt.show()

Für Daten, welche verschiedenen Kategorien zugeordnet werden können, werden Balkendiagramme eingesetzt, die dann beispielsweise die Umsätze verschiedener Produktgruppen vergleichen können. In Matplotlib kann dies mithilfe der .bar() Funktion schnell und einfach umgesetzt werden: 

import matplotlib.pyplot as plt

# Example: Sales per product
products = ["Product A", "Product B", "Product C"]
sales = [2300, 1700, 2900]

fig, ax = plt.subplots()
ax.bar(products, sales, color="orange")
ax.set_title("Sales per Product")
ax.set_ylabel("Sales (€)")
plt.show()

Für die Darstellung von Verteilungen oder Häufigkeiten eignen sich unter anderem Histogramme sehr gut, da sie für jeden Wertebereich die Anzahl der Messpunkte darstellen. In der Matplotlib-Funktion .hist() kann dazu eine Messreihe übergeben werden und auch direkt die Anzahl der bins bestimmt werden, also in wie viele Bereiche die Daten aufgeteilt werden sollen. Für unser Beispiel generieren wir dafür eine zufällige Messreihe mit dem Alter von insgesamt 200 Personen mit einem Durchschnitt von 35 und einer Standardabweichung von 10. 

import matplotlib.pyplot as plt
import numpy as np

# Example: Age distribution in a sample
ages = np.random.normal(35, 10, 200)  # mean=35, std=10

fig, ax = plt.subplots()
ax.hist(ages, bins=10, color="purple", edgecolor="black")
ax.set_title("Age Distribution")
ax.set_xlabel("Age")
ax.set_ylabel("Frequency")
plt.show()

Mithilfe dieser Basisdiagramme lassen sich bereits viele Anwendungen und Visualisierungen umsetzen. Sie bilden das Fundament von vielen Auswertungen und können durch verschiedene Beschriftungen, Farben und Layouts auch individuell angepasst werden. 

Wie können Diagramme in Matplotlib weiter individualisiert werden?

Ein wichtiger Vorteil von Matplotlib ist die große Flexibilität, welche es bei der Gestaltung von Diagrammen bietet und dem Nutzer die komplette Freiheit über verschiedene Elemente gibt. Zu diesen wichtigsten Features zählen unter anderem: 

  • Achsenbeschriftungen und Titel: Wie wir bereits in den vorangegangenen Beispielen gesehen haben, können die Achsen und die Diagramme klar benannt werden, indem set_xlabel(), set_ylabel() und set_title() genutzt werden. Wenn hier kein Wert definiert wurde, nutzt Matplotlib einfach die Grundeinstellungen. 
  • Legenden: Wenn mehrere Datenreihen abgebildet werden, kann es sinnvoll sein, eine Legende einzubauen, um es dem Nutzer einfacher zu machen, die Werte unterscheiden zu können. Mithilfe von ax.legend() kann dies einfach eingefügt werden. 
  • Farben, Marker und Linienstile: Matplotlib besitzt verschiedene Parameter, mithilfe derer die Datenreihen visuell hervorgehoben werden können und dadurch besser unterscheidbar sind. Neben den Farben kann dadurch beispielsweise auch der Marker oder der Linienstil verändert werden. 
  • Subplots: Wie bereits erwähnt, lassen sich mithilfe von plt.subplots() mehrere Diagramme in einer gemeinsamen Figure darstellen, um Dashboards zu erzeugen oder Vergleiche zwischen den Diagrammen zu ermöglichen. 
  • Layout-Anpassungen: Die Funktion plt.tight_layout() sorgt dafür, dass sich Titel, Beschriftungen und auch die Achsen nicht überschneiden, wodurch das Diagramm insgesamt harmonischer wirkt. 

Mithilfe dieser Gestaltungsmöglichkeiten lassen sich die standardmäßigen Diagramme sehr einfach individualisieren und es können professionelle Plots erstellt werden, welche optisch ansprechend aussehen. In dem folgenden Beispiel werden diese Features konkret angewendet: 

import matplotlib.pyplot as plt
import numpy as np

# Example data
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# Figure with two subplots
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))

# First Subplot: Sine Function
ax1.plot(x, y1, color="blue", linestyle="--", marker="o", label="sin(x)")
ax1.set_title("Sine Function")
ax1.set_xlabel("x values")
ax1.set_ylabel("y values")
ax1.legend()  # Add legend

# Second Subplot: Cosine Function
ax2.plot(x, y2, color="red", linestyle="-", marker="x", label="cos(x)")
ax2.set_title("Cosine Function")
ax2.set_xlabel("x values")
ax2.set_ylabel("y values")
ax2.legend()  # Add legend

plt.tight_layout()
plt.show()

Das solltest Du mitnehmen

  • Matplotlib ist eine umfangreiche Python-Bibliothek, die zur Datenvisualisierung verwendet werden kann.
  • Die Grundstruktur besteht dabei aus den sogenannten Figures und Axes in denen verschiedene Diagramme abgebildet werden können. Dadurch wird es ermöglicht, dass man ohne Probleme Diagramme nebeneinander anzeigen und vergleichen kann.
  • Die Bibliothek unterstützt viele verschiedene Diagrammtypen, wie zum Beispiel Liniendiagramme, Balkendiagramme oder auch Histrogramme.
  • Darüber hinaus gibt es viele Möglichkeiten, die standardmäßigen Ansichten noch weiter zu individualisieren, indem beispielsweise die Achsenbeschriftungen oder die Farbpaletten verändert werden.
Python Programming Basics / Python Tutorial

Python Tutorial für Anfänger

Beherrschen Sie die Grundlagen mit diesem Python Tutorial. Erfahren Sie mehr über Syntax, Datentypen, Kontrollstrukturen und mehr.

Python Variables / Python Variablen

Was sind Python Variablen?

Eintauchen in Python Variablen: Erforschen Sie Datenspeicherung, dynamische Typisierung, Scoping und Tipps für effizienten Code.

Jenkins

Was ist Jenkins?

Jenkins beherrschen: Rationalisieren Sie DevOps mit leistungsstarker Automatisierung. Lernen Sie CI/CD-Konzepte und deren Umsetzung.

Conditional Statements in Python / If else Python / Bedingte Anweisung

Python-Tutorial: Bedingte Anweisungen und If/Else Blöcke

Lernen Sie, wie man bedingte Anweisungen in Python verwendet. Verstehen Sie if-else und verschachtelte if- und elif-Anweisungen.

XOR

Was ist XOR?

Entdecken Sie XOR: Die Rolle des Exklusiv-Oder-Operators in Logik, Verschlüsselung, Mathematik, KI und Technologie.

Python Exception Handling / Ausnahmebehandlung in Python

Wie kannst Du die Ausnahmebehandlung in Python umsetzen?

Die Kunst der Ausnahmebehandlung in Python: Best Practices, Tipps und die wichtigsten Unterschiede zwischen Python 2 und Python 3.

Andere Beiträge zum Thema Matplotlib

Die offizielle Website findest Du hier.

Niklas Lang

Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.

Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.

Cookie Consent mit Real Cookie Banner