Beherrschen von Mehreren Plots auf der gleichen Abbildung in Matplotlib
Published on
Das Erstellen überzeugender Datenvisualisierungen ist eine wesentliche Fähigkeit in der Welt der Datenwissenschaft. Ein Tool, das bei dieser Aufgabe von unschätzbarem Wert ist, ist Matplotlib, eine Python-Bibliothek, die speziell für die Datenvisualisierung entwickelt wurde. In diesem umfassenden Leitfaden werden wir uns mit den spezifischen Aspekten der Erstellung mehrerer Plots auf derselben Abbildung in Matplotlib befassen. Diese Fähigkeit ist besonders nützlich, wenn Sie mehrere Datentrends auf einer einheitlichen Leinwand vergleichen müssen und die Klarheit und Lesbarkeit Ihrer Datenvisualisierungen weiter erhöhen möchten.
Grundlagen von Mehreren Plots in Matplotlib
Bevor wir uns mit komplexeren Visualisierungen beschäftigen, wollen wir uns die Grundlagen für das Erstellen mehrerer Linien auf derselben Abbildung unter Verwendung von Matplotlib anschauen.
Das pyplot-Modul von Matplotlib macht das Erstellen von Grafiken und Plots einfach. Die Syntax ähnelt der von MATLAB, was für diejenigen von Vorteil sein kann, die mit diesem System vertraut sind. Hier ist zunächst ein einfaches Beispiel, das veranschaulicht, wie man eine Abbildung mit zwei Linien aus verschiedenen Datensätzen erstellt:
import matplotlib.pyplot as plt
# Beispieldaten
x = [1, 2, 3, 4, 5]
y1 = [1, 2, 3, 4, 5]
y2 = [5, 4, 3, 2, 1]
# Plots erstellen
plt.plot(x, y1, 'b-', label='Aufsteigend')
plt.plot(x, y2, 'r-', label='Absteigend')
# Legende hinzufügen
plt.legend(loc='best')
# Abbildung anzeigen
plt.show()
In diesem Beispiel erstellen plt.plot(x, y1, 'b-', label='Aufsteigend')
und plt.plot(x, y2, 'r-', label='Absteigend')
die Plots der Datensätze y1 und y2 gegen x. Die Argumente 'b-' und 'r-' definieren die Farbe und den Typ der Linie (blau und rot), während 'Aufsteigend' und 'Absteigend' als Bezeichnungen für die Legende dienen. Der Funktionsaufruf plt.legend(loc='best')
platziert die Legende an der Position, die sich am wenigsten mit den gezeichneten Linien überschneidet.
Mehr Plots, Mehr Komplexität: Die objektorientierte API von Matplotlib
Während die oben genannte Technik für einfache Plots einfach und effektiv ist, kann sie bei komplexeren Visualisierungen einschränkend sein. Hier kommt die objektorientierte API von Matplotlib ins Spiel. Durch das Erstellen von Figure- und Axes-Objekten erhalten Sie eine feinere Kontrolle über die Elemente des Plots. So können Sie mit dieser API das gleiche Ergebnis wie zuvor erzielen:
# Neues Figure- und Axes-Objekt erstellen
fig, ax = plt.subplots()
# Daten auf den Axes plotten
ax.plot(x, y1, 'b-', label='Aufsteigend')
ax.plot(x, y2, 'r-', label='Absteigend')
# Legende hinzufügen
ax.legend(loc='best')
# Abbildung anzeigen
plt.show()
Die Code-Entschlüsselung: Verständnis des objektorientierten Ansatzes
Sie fragen sich vielleicht, warum jemand die ausführlichere objektorientierte API verwenden würde, wenn das einfachere pyplot-Modul die Arbeit erledigt. Je anspruchsvoller Ihre Visualisierungen werden, desto offensichtlicher wird die Antwort. Die Verwendung von Figure- und Axes-Objekten bietet Ihnen eine größere Kontrolle über Ihre Plots. Es ermöglicht Anpassungen, die die einfachere pyplot-Schnittstelle nicht so einfach bereitstellt.
Betrachten Sie die Figure- und Axes-Objekte als Container für Ihren Plot. Das Figure-Objekt ist das gesamte Fenster oder die Seite, auf der alles gezeichnet wird. Es kann mehrere Axes-Objekte enthalten. Jedes Axes-Objekt ist wiederum ein separater Plot mit eigenen Elementen (Linien, Legenden, Beschriftungen usw.).
Mit diesem Verständnis sehen Sie, dass der objektorientierte Ansatz eine solide Grundlage für komplexere Mehrfach-Plot-Visualisierungen legt, die wir in den folgenden Abschnitten erkunden werden.
Mehrere Untergeordnete Plots: Mehrere Axes auf einer Abbildung
Wir haben das Plotten mehrerer Linien in einem einzelnen Axes-Objekt behandelt, aber was ist, wenn wir komplett separate Untergeordnete Plots in derselben Abbildung vergleichen möchten? Die Funktion subplots()
von Matplotlib bietet eine effiziente Möglichkeit, dies zu erreichen. Die Funktion subplots()
erstellt eine neue Abbildung und mehrere Axes-Objekte auf einmal und gibt sie für unsere Verwendung zurück. Sehen wir uns an, wie man vier Untergeordnete Plots, zwei Reihen und zwei Spalten, in derselben Abbildung generiert:
# Neue Abbildung mit einem 2x2 Gitter von Axes erstellen
fig, axs = plt.subplots(2, 2)
# Einige Beispieldaten definieren
x = [1, 2, 3, 4, 5]
y = [[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [2, 3, 4, 5, 6], [6, 5, 4, 3, 2]]
# Daten auf jedem Axes plotten
for i, ax in enumerate(axs.flatten()):
ax.plot(x, y[i])
# Abbildung anzeigen
plt.show()
In diesem Fall erstellt plt.subplots(2, 2)
ein 2x2 Gitter von Axes, und axs.flatten()
wird verwendet, um einfach über diese Axes in einer Schleife zu iterieren.
Mehrere Y-Achsen: Wenn eine Y-Achse nicht ausreicht
Manchmal müssen Sie verschiedene Datensätze, die unterschiedliche Skalen oder Einheiten haben, in derselben Grafik plotten. Die Verwendung von zwei verschiedenen Y-Achsen in derselben Abbildung ist eine perfekte Lösung für solche Szenarien. Mit der objektorientierten API von Matplotlib ist dies einfach:
# Neues Figure- und Axes-Objekt erstellen
fig, ax1 = plt.subplots()
# Zweites Axes erstellen, das dieselbe x-Achse teilt
ax2 = ax1.twinx()
# Daten auf jedem Axes plotten
ax1.plot(x, y1, 'b-', label='Datensatz 1')
ax2.plot(x, y2, 'r-', label='Datensatz 2')
# Y-Achsen-Beschriftungen festlegen
ax1.set_ylabel('Datensatz 1', color='b')
ax2.set_ylabel('Datensatz 2', color='r')
# Abbildung anzeigen
plt.show()
In diesem Fall erstellt ax1.twinx()
ein neues Axes, das die x-Achse mit ax1
gemeinsam hat, aber eine separate y-Achse besitzt.
Alternative zu Matplotlib: Datenvisualisierung mit PyGWalker
Neben der Verwendung von Matplotlib zur Visualisierung Ihrer Pandas-Datenframe gibt es eine Alternative: die Open-Source-Python-Bibliothek PyGWalker, die Ihnen dabei helfen kann, Datenvisualisierungen einfach zu erstellen: PyGWalker (opens in a new tab).
(opens in a new tab) Kein komplizierter Verarbeitungsprozess mit Python-Codierung mehr erforderlich. Importieren Sie einfach Ihre Daten und ziehen Sie Variablen per Drag & Drop, um alle Arten von Datenvisualisierungen zu erstellen! Hier ist ein kurzes Demo-Video zur Bedienung:
So verwenden Sie PyGWalker in Ihrem Jupyter-Notebook:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
Alternativ können Sie es auch in Kaggle Notebook/Google Colab ausprobieren:
PyGWalker basiert auf der Unterstützung unserer Open-Source-Community. Vergessen Sie nicht, PyGWalker GitHub (opens in a new tab) zu überprüfen und uns einen Stern zu geben!
Fazit
Die Beherrschung der Kunst, mehrere Diagramme auf derselben Abbildung in Matplotlib zu erstellen, kann Ihre Fähigkeiten zur Datenvisualisierung auf eine ganz neue Ebene heben. Indem Sie die grundlegenden Konzepte verstehen und sich nach und nach in komplexere Bereiche vorwagen, können Sie Matplotlib effektiv einsetzen, um Ihre Daten zum Leben zu erwecken.
FAQ
- Was sind die Vorteile der Erstellung mehrerer Diagramme auf derselben Abbildung in Matplotlib?
Das Vorhandensein mehrerer Diagramme auf derselben Abbildung kann Ihre Datenvisualisierung erheblich verbessern. Diese Fähigkeit ermöglicht einfachere Datenvergleiche, da Sie mehrere Datentrends auf einer einzigen Leinwand analysieren können. Es verbessert auch die Klarheit und Lesbarkeit Ihrer Datenrepräsentationen.
- Wann sollte ich die objektorientierte API von Matplotlib verwenden?
Während das pyplot-Modul für einfache Diagramme einfach und nützlich ist, eignet sich die objektorientierte API von Matplotlib besser für komplexe Visualisierungen. Durch direkte Interaktion mit den Objekten Figures und Axes haben Sie eine feinere Kontrolle über die Elemente des Diagramms, was von unschätzbarem Wert sein kann, wenn Ihre Visualisierungen eine höhere Anpassung erfordern.
- Was ist der Zweck mehrerer y-Achsen in einem einzigen Diagramm?
Mehrere y-Achsen sind besonders nützlich, wenn Sie verschiedene Datensets mit unterschiedlichen Skalen oder Einheiten in demselben Diagramm darstellen möchten. Durch Zuordnung jedes Datensets zu seiner y-Achse können Sie diese verschiedenen Skalen oder Einheiten effektiv repräsentieren, ohne Ihre Daten zu verzerren oder falsch darzustellen.