Wie man schnell mehrere Linienplots mit Matplotlib erstellt
Published on
Die Datenvisualisierung ist ein wichtiger Bestandteil jeder Datenanalyse-Pipeline. Sie ermöglicht die klare und intuitive Darstellung komplexer Datensätze und das Aufdecken von Trends und Mustern, die allein aus den Rohdaten möglicherweise nicht ersichtlich sind. Unter den vielen verfügbaren Werkzeugen für diesen Zweck ist Matplotlib eine der am weitesten verbreiteten Python-Bibliotheken und bietet eine vielseitige und leistungsstarke Plattform für die Erstellung von statischen, animierten und interaktiven Diagrammen.
Eine häufig verwendete Funktion in Matplotlib ist die Möglichkeit, mehrere Linienplots in einem einzigen Diagramm zu erstellen. In diesem umfassenden Leitfaden werden wir uns mit den Details befassen, wie Sie diese Visualisierungen erstellen können und dabei sowohl auf grundlegende Prinzipien als auch auf fortgeschrittenere Konzepte eingehen.
Die Grundlagen: Zwei Linien plotten
Beginnen wir mit einem einfachen Szenario: dem Plotten von zwei Linien in einem Diagramm. Hier ist der Code, den ein Benutzer in einem Online-Forum veröffentlicht hat und in dem behauptet wird, dass die y-Achse doppelt gedruckt wird:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, y1)
plt.plot(x, y2, '-.')
plt.xlabel("X-Achsendaten")
plt.ylabel("Y-Achsendaten")
plt.title('Mehrere Plots')
plt.show()
Ein einfacher Blick auf den Code zeigt die Ursache des Problems: Die y-Werte, die geplottet werden, sind Zeichenketten anstelle von Zahlen. Wenn Matplotlib auf Zeichendaten trifft, plottet es diese Werte nicht auf einer numerischen Skala. Stattdessen plottet es einfach die Zeichenkettenetiketten an ihren jeweiligen x-Koordinaten, was zu mehreren Etiketten übereinander auf der y-Achse führt.
Beheben des Zeichenkettenproblems: In numerische Werte umwandeln
Um dieses Problem zu beheben, muss das 'k' in den Zeichenketten durch 'e3' ersetzt werden, damit diese Zeichenketten Zahlen in wissenschaftlicher Notation darstellen können. Sie können dann mit der float()
-Funktion von Python in Gleitkommazahlen umgewandelt werden.
Der korrigierte Code würde dann so aussehen:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1])
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.')
plt.xlabel("X-Achsendaten")
plt.ylabel("Y-Achsendaten")
plt.title('Mehrere Plots')
plt.show()
Mit dieser einfachen Änderung konnte der Benutzer zwei Linien korrekt auf demselben Diagramm plotten, ohne dass die Etiketten auf der y-Achse dupliziert wurden. Es ist jedoch wichtig zu beachten, dass diese Umwandlung nur zu Plotting-Zwecken erfolgt und die Originaldaten nicht verändert.
Feinabstimmung von mehreren Linienplots: Legenden, Gitterlinien und Annotationen
Legenden können mit der Funktion legend()
zum Diagramm hinzugefügt werden, während Gitterlinien mit der Funktion grid()
ein- oder ausgeschaltet werden können. Für Annotationen können Sie die Funktion annotate()
verwenden, um dem Diagramm informative Texte hinzuzufügen.
Indem Sie diese Techniken anwenden, könnte unser endgültiger Code zur Erstellung von mehreren Linienplots in Matplotlib etwa so aussehen:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1], label='Linie 1')
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.', label='Linie 2')
plt.xlabel("X-Achsendaten")
plt.ylabel("Y-Achsendaten")
plt.title('Mehrere Plots')
plt.grid(True)
plt.legend()
plt.annotate('Spitzenwert für Linie 2', xy=(4, 85000), xytext=(3, 70000),
arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()
Wie offensichtlich ist, ist das Erstellen von mehreren Linienplots mit Matplotlib ein relativ unkomplizierter Prozess, der eine große Auswahl an Anpassungsoptionen für die Erstellung von schönen, informativen und aufschlussreichen Visualisierungen bietet.
FAQ
F: Kann ich mit Matplotlib mehr als zwei Linien in einem einzigen Diagramm plotten?
Ja, Sie können beliebig viele Linien auf einem einzigen Diagramm mit Matplotlib plotten. Wiederholen Sie einfach die plot()
-Funktion mit den gewünschten Daten für jede Linie.
F: Welche anderen Arten von Diagrammen kann ich mit Matplotlib erstellen?
Matplotlib unterstützt eine Vielzahl anderer Diagrammtypen, darunter Streudiagramme, Balkendiagramme, Histogramme und sogar 3D-Diagramme. Die Bibliothek ist äußerst vielseitig und kann nahezu jede Anforderung an die Datenvisualisierung erfüllen.
F: Wie kann ich mein Diagramm mit Matplotlib in einer Datei speichern?
Nachdem Sie Ihr Diagramm erstellt haben, können Sie die savefig()
-Funktion verwenden, um es in einer Datei zu speichern. Die Funktion erwartet einen Dateinamen als Argument, und Sie können das Format der Datei (z.B. PNG, PDF, SVG usw.) durch die entsprechende Dateierweiterung festlegen.
plt.savefig('my_plot.png')
Alternative zu Matplotlib: Datenvisualisierung mit PyGWalker
Neben der Verwendung von Matplotlib zur Visualisierung Ihres Pandas-Datenrahmens gibt es hier eine alternative, Open Source Python-Bibliothek, die Ihnen dabei helfen kann, Datenvisualisierungen einfach zu erstellen: PyGWalker (opens in a new tab).
Sie müssen nicht mehr komplizierte Verarbeitungen mit Python-Code durchführen. Importieren Sie einfach Ihre Daten und ziehen Sie Variablen, 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 in Kaggle Notebook/Google Colab ausprobieren:
PyGWalker basiert auf der Unterstützung unserer Open Source Community. Vergessen Sie nicht, PyGWalker auf GitHub (opens in a new tab) zu besuchen und uns ein Sternchen zu geben!
FAQ
Kann ich mit Matplotlib mehr als zwei Linien in einem Diagramm darstellen?
Ja, mit Matplotlib können Sie beliebig viele Linien in einem Diagramm darstellen. Wiederholen Sie einfach die plot()-Funktion mit den gewünschten Daten für jede Linie.
Welche anderen Arten von Diagrammen kann ich mit Matplotlib erstellen?
Matplotlib unterstützt eine Vielzahl anderer Diagrammtypen, einschließlich Streudiagrammen, Balkendiagrammen, Histogrammen und sogar 3D-Diagrammen. Die Bibliothek ist äußerst vielseitig und kann nahezu alle Anforderungen an die Datenvisualisierung erfüllen.
Wie kann ich mein Diagramm mit Matplotlib in eine Datei speichern?
Nachdem Sie Ihr Diagramm erstellt haben, können Sie die savefig()-Funktion verwenden, um es in eine Datei zu speichern. Die Funktion benötigt einen Dateinamen als Argument, und Sie können das Format der Datei (z.B. PNG, PDF, SVG, usw.) mithilfe der entsprechenden Dateierweiterung angeben.