Direkt zum Inhalt

Einführung in das Plotten mit Matplotlib in Python

In diesem Lernprogramm wird gezeigt, wie du mit Matplotlib, einer leistungsstarken Datenvisualisierungsbibliothek in Python, Linien-, Balken- und Streudiagramme mit Börsendaten erstellen kannst.
Aktualisierte 16. Jan. 2025  · 25 Min. Lesezeit

Matplotlib ist eine leistungsstarke und sehr beliebte Datenvisualisierungsbibliothek in Python. In diesem Lernprogramm werden wir besprechen, wie man mit Matplotlib Linien-, Balken- und Streudiagramme anhand von Börsendaten aus dem Jahr 2022 erstellt. Dies sind die grundlegenden Diagramme, mit denen du anfangen kannst, Daten zu verstehen, zu visualisieren und Geschichten zu erzählen. Datenvisualisierung ist eine wichtige Fähigkeit für alle Datenanalysten und Matplotlib ist eine der beliebtesten Bibliotheken zur Erstellung von Visualisierungen. 

Dieses Tutorial setzt einige grundlegende Vorkenntnisse in NumPy-Arrays und Pandas DataFrames voraus. Wenn wir diese Bibliotheken verwenden, werden wir schnell erklären, was wir tun. Der Schwerpunkt dieses Tutorials liegt auf Matplotlib, das auf diesen Datenstrukturen aufbaut, um Visualisierungen zu erstellen. 

Matplotlib ist sehr flexibel und anpassbar, um Diagramme zu erstellen. Es erfordert eine Menge Code, um einfachere Plots mit wenigen Anpassungen zu erstellen. Wenn du in einem Umfeld arbeitest, in dem die explorative Datenanalyse das Hauptziel ist und du viele schnell gezeichnete Diagramme brauchst, ohne viel Wert auf Ästhetik zu legen, ist die Bibliothek seaborn eine gute Option, da sie auf Matplotlib aufbaut, um Visualisierungen schneller zu erstellen. Bitte schau dir stattdessen unser Python Seaborn Tutorial für Anfänger an, wenn du vor allem explorative Datenanalysen durchführen oder schnell und einfach Diagramme erstellen möchtest.

Matplotlib Beispiele

Am Ende dieses Tutorials wirst du in der Lage sein, großartige Visualisierungen in Matplotlib zu erstellen. Wir werden uns auf das Erstellen von Liniendiagrammen, Balkendiagrammen und Streudiagrammen konzentrieren. Wir werden uns auch damit befassen, wie du Entscheidungen zur Anpassung triffst, z. B. die Verwendung von Farben, die Beschriftung von Plots und die übersichtliche Anordnung der Plots, um eine überzeugende Geschichte zu erzählen.

image14.png

image13.png

image7.png

Der Datensatz

Matplotlib wurde entwickelt, um mit NumPy-Arrays und Pandas-DataFrames zu arbeiten. Die Bibliothek macht es einfach, Diagramme aus tabellarischen Daten zu erstellen. Für dieses Tutorial verwenden wir die historischen Kurse des Dow Jones Industrial Average (DJIA) Index vom 2022-01-01 bis 2022-12-31(hier zu finden). Du kannst den Datumsbereich auf der Seite festlegen und dann auf die Schaltfläche "Tabellenkalkulation herunterladen" klicken.

Wir laden die csv-Datei mit dem Namen HistoricalPrices.csv mit Hilfe der Bibliothek pandas und zeigen die ersten Zeilen mit der Methode .head() an.

import pandas as pd

djia_data = pd.read_csv('HistoricalPrices.csv')
djia_data.head()

image19.png

Wir sehen, dass die Daten 4 Spalten enthalten: Datum, Eröffnung, Hoch, Tief und Schluss. Die letzten 4 beziehen sich auf den Preis des Indexes während des Handelstages. Nachfolgend findest du eine kurze Erklärung zu jeder Variable.

  • Datum: Der Tag, den die Aktienkursinformation darstellt.
  • Offen: Der Kurs des DJIA um 9:30 AM ET, wenn der Aktienmarkt öffnet.
  • Hoch: Der höchste Preis, den der DJIA im Laufe des Tages erreicht hat.
  • Niedrig: Der niedrigste Kurs, den der DJIA im Laufe des Tages erreicht hat.
  • Schließen: Der Kurs des DJIA, als der Markt um 4:00 PM ET den Handel beendete.

Als schnellen Bereinigungsschritt müssen wir auch die Methode rename() in pandas verwenden, da der Datensatz, den wir heruntergeladen haben, ein zusätzliches Leerzeichen in den Spaltennamen enthält. 

djia_data = djia_data.rename(columns = {' Open': 'Open', ' High': 'High', ' Low': 'Low', ' Close': 'Close'})

Wir stellen außerdem sicher, dass die Variable Datum eine Datetime-Variable ist und sortieren in aufsteigender Reihenfolge nach dem Datum.  

djia_data['Date'] = pd.to_datetime(djia_data['Date'])
djia_data = djia_data.sort_values(by = 'Date')

Matplotlib laden

Als Nächstes laden wir das Untermodul pyplot von Matplotlib, damit wir unsere Diagramme zeichnen können. Das Modul pyplot enthält alle relevanten Methoden, die wir brauchen, um Plots zu erstellen und sie zu gestalten. Wir werden den herkömmlichen Alias plt verwenden. In späteren Teilen dieses Tutorials werden wir auch Pandas, Numpy und Datetime laden.

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from datetime import datetime

Zeichnen von Liniendiagrammen

Das erste Diagramm, das wir erstellen, ist ein Liniendiagramm. Liniendiagramme sind ein sehr wichtiger Diagrammtyp, da sie sich hervorragend für die Darstellung von Zeitreihendaten eignen. Oft ist es wichtig, zu visualisieren, wie sich KPIs im Laufe der Zeit verändern, um Muster in den Daten zu erkennen, auf die reagiert werden kann.

Liniendiagramme mit einer einzigen Linie

  • Zeige, wie man ein einfaches Liniendiagramm mit einer einzelnen Linie zeichnet.
    • Achte darauf, die Verwendung von plt.show() zu betonen, damit der Plot tatsächlich angezeigt wird.
  • Gib einen kurzen Kommentar zur Handlung ab, einschließlich einer Interpretation.

Wir können ein Liniendiagramm in matplotlib mit der Methode plt.plot() erstellen, wobei das erste Argument die x-Variable und das zweite Argument die y-Variable in unserem Liniendiagramm ist. Wenn wir ein Diagramm erstellen, müssen wir darauf achten, plt.show() aufzurufen, um sicherzustellen, dass wir das Diagramm sehen, das wir erstellt haben.  Wir werden den Schlusskurs des DJIA im Zeitverlauf visualisieren. 

plt.plot(djia_data['Date'], djia_data['Close'])
plt.show()

image1.png

Wir können sehen, dass der Indexpreis im Laufe des Jahres mit seinem höchsten Wert begann, gefolgt von einigen Schwankungen nach oben und unten im Laufe des Jahres. Wir sehen, dass der Preis um Oktober herum am niedrigsten war, gefolgt von einem starken Preisanstieg zum Jahresende.

Liniendiagramme mit mehreren Linien

Wir können mehrere Linien auf demselben Diagramm darstellen, indem wir einen weiteren plt.plot() Aufruf vor der Funktion plt.show() hinzufügen.

plt.plot(djia_data['Date'], djia_data['Open'])
plt.plot(djia_data['Date'], djia_data['Close'])


plt.show()

image16.png

Im Laufe des Jahres zeigt sich, dass die Eröffnungs- und Schlusskurse des DJIA an jedem Tag relativ nahe beieinander lagen, ohne dass es ein klares Muster gab, bei dem einer immer über oder unter dem anderen lag.  

Hinzufügen einer Legende

Wenn wir unterscheiden wollen, welche Zeile für welche Spalte steht, können wir eine Legende hinzufügen. Dadurch wird eine farbige Beschriftung in der Ecke des Diagramms erstellt. Dazu verwenden wir plt.legend() und fügen jedem plt.plot() -Aufruf Label-Parameter hinzu. 

plt.plot(djia_data['Date'], djia_data['Open'], label = 'Open')
plt.plot(djia_data['Date'], djia_data['Close'], label = 'Close')
plt.legend()
plt.show()

image2.png

Jetzt wird eine Legende mit den angegebenen Beschriftungen an der Standardposition oben rechts angezeigt (die Position kann mit dem Argument loc in plt.legend() angegeben werden). 

Balkendiagramme zeichnen

Balkendiagramme sind sehr nützlich, um numerische Werte zwischen verschiedenen Kategorien zu vergleichen. Sie sind besonders hilfreich, um die größten und kleinsten Kategorien zu finden. 

In diesem Abschnitt werden wir die Daten mithilfe von Pandas zu monatlichen Durchschnittswerten aggregieren, damit wir die monatliche Performance des DJIA im Jahr 2022 vergleichen können. Wir werden auch die ersten 6 Monate verwenden, um die Daten einfacher zu visualisieren.

# Import the calendar package 
from calendar import month_name

# Order by months by chronological order
djia_data['Month'] = pd.Categorical(djia_data['Date'].dt.month_name(), month_name[1:])

# Group metrics by monthly averages
djia_monthly_mean = djia_data \
    .groupby('Month') \
    .mean() \
    .reset_index()

djia_monthly_mean.head(6)

image5.png

Vertikale Balkendiagramme

Wir beginnen damit, ein Balkendiagramm mit vertikalen Balken zu erstellen. Dazu kannst du die Methode plt.bar() verwenden, wobei das erste Argument die Variable der x-Achse (Monat) und der Parameter height die y-Achse (Schluss) ist.  Dann wollen wir sicherstellen, dass wir plt.show() aufrufen, um unser Diagramm anzuzeigen.

plt.bar(djia_monthly_mean['Month'], height = djia_monthly_mean['Close'])
plt.show()

image9.png

Wir sehen, dass die meisten Schlusskurse des DJIA nahe beieinander lagen, wobei der niedrigste durchschnittliche Schlusswert im Juni und der höchste im Januar lag.

Neuordnung von Balken in Balkendiagrammen

Wenn wir diese Balken in der Reihenfolge des höchsten bis zum niedrigsten monatlichen Durchschnittsschlusskurs anzeigen wollen, können wir die Balken mit der Methode sort_values() in Pandas und dann mit der gleichen Methode plt.bar() sortieren. 

djia_monthly_mean_srtd = djia_monthly_mean.sort_values(by = 'Close', ascending = False)

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'])
plt.show()

image10.png

Wie du siehst, ist es deutlich einfacher zu erkennen, welche Monate den höchsten durchschnittlichen DJIA-Schlusskurs hatten und welche Monate die niedrigeren Durchschnitte aufwiesen. Es ist auch einfacher, die einzelnen Monate zu vergleichen und eine Rangliste zu erstellen.

Horizontale Balkendiagramme

  • Zeige, wie du die Achsen vertauschen kannst, damit die Balken horizontal sind.
  • Gib einen kurzen Kommentar zur Handlung ab, einschließlich einer Interpretation.

Manchmal ist es einfacher, Balkendiagramme zu interpretieren und die Beschriftungen zu lesen, wenn wir das Balkendiagramm mit horizontalen Balken erstellen. Wir können dies mit der Methode plt.hbar() tun.  

plt.barh(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'])
plt.show()

image17.png
Wie du sehen kannst, sind die Beschriftungen der einzelnen Kategorien (Monate) besser zu lesen als bei den vertikalen Balken. Wir können trotzdem leicht zwischen den Gruppen vergleichen. Dieses horizontale Balkendiagramm ist besonders nützlich, wenn es viele Kategorien gibt.

Zeichnen von Streudiagrammen

Streudiagramme sind sehr nützlich, um die Beziehungen zwischen zwei numerischen Variablen zu erkennen. Dies kann dir ein Gefühl dafür geben, was du bei einer Variablen zu erwarten hast, wenn sich die andere Variable ändert, und kann auch sehr aufschlussreich für deine Entscheidung sein, verschiedene Modellierungstechniken wie lineare oder nichtlineare Regression anzuwenden.  

Streudiagramme

Ähnlich wie bei den anderen Diagrammen kann ein Streudiagramm mit pyplot.scatter() erstellt werden, wobei das erste Argument die x-Achsen-Variable und das zweite Argument die y-Achsen-Variable ist. In diesem Beispiel betrachten wir die Beziehung zwischen dem Eröffnungs- und dem Schlusskurs des DJIA.

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.show()

image4.png

Auf der x-Achse sehen wir den Eröffnungskurs des DJIA und auf der y-Achse den Schlusskurs. Wie zu erwarten, steigt mit dem Anstieg des Eröffnungskurses auch der Schlusskurs stark an.

Streudiagramme mit einer Trendlinie

Als Nächstes fügen wir dem Diagramm eine Trendlinie hinzu, um die lineare Beziehung zwischen den Variablen für die Eröffnungs- und Schlusskurse deutlicher darzustellen. Dazu verwenden wir die Methode numpy polyfit() und poly1d(). Die erste Methode liefert uns eine polynomiale Anpassung nach der Methode der kleinsten Quadrate, wobei das erste Argument die x-Variable, die zweite Variable die y-Variable und die dritte Variable der Grad der Anpassung (1 für linear) ist. Mit der zweiten Methode erhalten wir eine eindimensionale Polynomklasse, die wir verwenden können, um mit plt.plot() eine Trendlinie zu erstellen.

z = np.polyfit(djia_data['Open'], djia_data['Close'], 1)
p = np.poly1d(z)


plt.scatter(djia_data['Open'], djia_data['Close'])
plt.plot(djia_data['Open'], p(djia_data['Open']))
plt.show()

image20.png

Wie wir sehen können, folgt die Linie im Hintergrund des Diagramms genau dem Trend des Streudiagramms, da die Beziehung zwischen Eröffnungs- und Schlusskurs stark linear ist. Wir sehen, dass bei einem Anstieg des Eröffnungskurses der Schlusskurs in der Regel in ähnlichem Maße und linear ansteigt.

Einstellen des Diagrammtitels und der Achsenbeschriftung

Plot-Titel und Achsenbeschriftungen erleichtern das Verständnis einer Visualisierung erheblich und ermöglichen es dem Betrachter, schnell und klar zu verstehen, was er gerade sieht. Wir können dies tun, indem wir mit plt.xtitle(), plt.ylabel() und plt.xlabel() weitere Ebenen hinzufügen, was wir anhand des Streudiagramms aus dem vorherigen Abschnitt demonstrieren werden. 

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.show()

image8.png

Wechselnde Farben

Farbe kann in Datenvisualisierungen ein mächtiges Werkzeug sein, um bestimmte Punkte zu betonen oder eine konsistente Geschichte mit einheitlichen Farben für eine bestimmte Idee zu erzählen. In Matplotlib können wir Farben mithilfe von benannten Farben (z. B. "rot", "blau" usw.), Hex-Code ("#f4db9a", "#383c4a" usw.) und Rot-Grün-Blau-Tupeln (z. B. (125, 100, 37), (30, 54, 121), usw.). 

Zeilen

Bei einem Liniendiagramm können wir die Farbe mithilfe des Attributs color in plt.plot() ändern. Unten ändern wir die Farbe unserer Eröffnungskurslinie in "schwarz" und die unserer Schlusskurslinie in "rot".

plt.plot(djia_data['Date'], djia_data['Open'], color = 'black')
plt.plot(djia_data['Date'], djia_data['Close'], color = 'red')
plt.show()

image3.png

Bars

Für Balken können wir eine Liste in das Farbattribut eingeben, um die Farbe jeder Zeile festzulegen. Nehmen wir an, wir wollen den Durchschnittspreis im Januar hervorheben, um zu verdeutlichen, wie stark der durchschnittliche Schlusskurs war. Wir können dies tun, indem wir dem Balken eine einzigartige Farbe geben, um die Aufmerksamkeit auf ihn zu lenken. 

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'], color = ['blue', 'gray', 'gray', 'gray', 'gray', 'gray'])
plt.show()

image11.png

Punkte

Bei Streudiagrammen schließlich können wir die Farbe mit dem Farbattribut von plt.scatter() ändern. Wir färben alle Punkte im Januar blau und alle anderen Punkte grau, um eine ähnliche Geschichte wie in der obigen Visualisierung zu zeigen. 

plt.scatter(djia_data[djia_data['Month'] == 'January']['Open'], djia_data[djia_data['Month'] == 'January']['Close'], color = 'blue')

plt.scatter(djia_data[djia_data['Month'] != 'January']['Open'], djia_data[djia_data['Month'] != 'January']['Close'], color = 'gray')

plt.show()

image18.png
Using Colormaps

Colormaps sind eingebaute Matplotlib-Farben, die nach der Größe des Wertes skalieren(Dokumentation hier). Die Farbkarten sehen im Allgemeinen ästhetisch gut aus und helfen dabei, mit den steigenden Werten eine Geschichte zu erzählen. 

Im folgenden Beispiel verwenden wir eine Farbkarte, indem wir den Schlusskurs (y-Variable) an das Attribut c und die Plasma-Farbkarte durch cmap übergeben. Wir sehen, dass mit zunehmenden Werten die zugehörige Farbe heller und gelber wird, während das untere Ende der Werte lila und dunkler ist.

plt.scatter(djia_data['Open'], djia_data['Close'], c=djia_data['Close'], cmap = plt.cm.plasma)

plt.show()

 image6.png

Einstellung der Achsenbegrenzungen

Manchmal ist es hilfreich, sich einen bestimmten Wertebereich in einer Grafik anzusehen. Wenn der DJIA zum Beispiel derzeit um die 30.000 US-Dollar gehandelt wird, interessiert uns vielleicht nur das Verhalten um diesen Preis herum.  Wir können ein Tupel an plt.xlim() und plt.ylim() übergeben, um die x- bzw. y-Grenzen zu setzen. Der erste Wert im Tupel ist die Untergrenze und der zweite Wert im Tupel ist die Obergrenze.

image15.png

Parzellen speichern

Schließlich können wir die Diagramme, die wir in Matplotlib erstellen, mit der Methode plt.savefig() speichern. Wir können die Datei in vielen verschiedenen Dateiformaten speichern, darunter "png", "pdf" und "svg". Das erste Argument ist der Dateiname. Das Format wird aus der Dateierweiterung abgeleitet (oder du kannst es mit dem Argument format außer Kraft setzen).

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.savefig('DJIA 2022 Scatterplot Open vs. Close.png')

Bring es auf die nächste Stufe

In diesem Lernprogramm haben wir die Grundlagen von Matplotlib behandelt und du kannst jetzt einfache Linien-, Balken- und Streudiagramme erstellen. Matplotlib ist eine fortschrittliche Bibliothek mit vielen tollen Funktionen für die Erstellung ästhetisch ansprechender Visualisierungen. Wenn du deine Matplotlib-Kenntnisse auf die nächste Stufe bringen möchtest, besuche unseren Kurs Einführung in die Datenvisualisierung mit Matplotlib. Du kannst auch unser Matplotlib Cheat Sheet herunterladen: Plotten in Python zum Nachschlagen, wenn du mit der Erstellung deiner eigenen Visualisierungen beginnst. 

Matplotlib FAQs

Was ist Matplotlib in Python?

Matplotlib ist eine beliebte Bibliothek zur Datenvisualisierung in Python. Sie wird häufig für die Erstellung statischer, interaktiver und animierter Visualisierungen in Python verwendet. Mit Matplotlib kannst du Diagramme, Histogramme, Balkendiagramme, Streudiagramme usw. mit nur wenigen Zeilen Code erstellen.

Warum sollte ich Matplotlib für die Datenvisualisierung verwenden?

Dafür gibt es mehrere Gründe. Erstens: Matplotlib ist flexibel. Es unterstützt eine Vielzahl von Diagrammen und Plots und lässt sich gut mit vielen anderen Python-Bibliotheken wie NumPy und Pandas integrieren. Zweitens ist es eine ausgereifte und weit verbreitete Bibliothek, die über eine starke Community und viele Ressourcen und Tutorials verfügt. Da die Software in Python geschrieben ist, kannst du deine Diagramme als Teil deiner Datenpipelines automatisieren und anpassen.

Wie installiere ich Matplotlib?

Du kannst Matplotlib mit pip, dem Paketinstallationsprogramm von Python, installieren. Öffne dein Terminal und gib ein: pip install matplotlib. Wenn du ein Jupyter-Notebook verwendest, kannst du diesen Befehl in einer Codezelle ausführen, indem du ein Ausrufezeichen voranstellst: !pip install matplotlib.

Wie erstelle ich einen einfachen Plot in Matplotlib?

Hier ist ein einfaches Beispiel. Zuerst musst du die Matplotlib-Bibliothek importieren. Das am häufigsten verwendete Modul ist pyplot und wird normalerweise unter dem Alias plt importiert:

import matplotlib.pyplot as plt

Dann kannst du ein einfaches Liniendiagramm wie dieses erstellen:

plt.plot([1, 2, 3, 4]) plt.ylabel('Some Numbers') plt.show()

In diesem Beispiel wird plt.plot([1, 2, 3, 4]) verwendet, um die angegebene Liste von Zahlen darzustellen. Die Zeile plt.ylabel('Some Numbers') legt die Beschriftung für die y-Achse fest, und plt.show() zeigt die Darstellung an.


Author
Kevin Babitz
LinkedIn

Data Science Autor | Senior Technical Marketing Analyst bei Wayfair | MSE in Data Science an der University of Pennsylvania

Themen

Erfahre mehr über Python

Zertifizierung verfügbar

Kurs

Einführung in die Datenvisualisierung mit Matplotlib

4 hr
188.3K
Lerne, wie du mit Matplotlib Datenvisualisierungen erstellst, anpasst und teilst.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow