Eine Einführung in Matplotlib in Python

Matplotlib ist eine weit verbreitete Python-Bibliothek zur Erstellung von Visualisierungen, die insbesondere von Fachleuten im Bereich des maschinellen Lernens für statische und dynamische Darstellungen genutzt wird.

Was ist Matplotlib?

Matplotlib wurde 2003 von John D. Hunter ins Leben gerufen und am 8. Mai 2021 in der aktuellen Version 3.4.2 veröffentlicht.

Diese Bibliothek ist überwiegend in Python programmiert, während Teile in C, Objective-C und JavaScript geschrieben wurden, was sie plattformunabhängig macht.

Matplotlib basiert auf NumPy, einer numerischen Erweiterung für Python. Die Verwendung von NumPy als Grundlage trägt zur Attraktivität als Open-Source-Alternative bei und macht sie zu einer präferierten Wahl gegenüber MATLAB.

Für grafische Benutzeroberflächen in Python ermöglicht Matplotlib das Einbetten statischer Diagramme über die bereitgestellte objektorientierte API.

Benutzer können mit wenigen Zeilen Python-Code verschiedene Arten von Diagrammen erstellen, wie beispielsweise Streudiagramme, Histogramme, Balkendiagramme, Kreisdiagramme, Liniendiagramme und Boxplots, um Daten zu visualisieren.

Matplotlib kann in Umgebungen wie der Python-Shell, Jupyter Notebook, Jupyter Lab, mit Pycharm oder Anaconda sowie auf Webservern wie Flask und Django auf diversen Plattformen eingesetzt werden.

Ähnlich wie in MATLAB lassen sich Diagramme umfassend hinsichtlich Schriftarten, Linien, Farben und Stilen anpassen.

Nach dieser kurzen Einführung in die Matplotlib-Bibliothek, wollen wir uns nun ansehen, wie man sie auf dem eigenen System einrichtet.

Einrichten der Matplotlib-Umgebung

Wie bei anderen Python-Paketen und -Bibliotheken, kann die vorkompilierte Matplotlib-Bibliothek mit dem pip-Paketmanager auf jedem Betriebssystem installiert werden.

Voraussetzung ist natürlich, dass Python und das Pip-Paket auf dem System installiert sind.

Mit den folgenden Befehlen lässt sich die Python- und Pip-Version anzeigen, um zu überprüfen, ob diese Werkzeuge bereits installiert sind.

Überprüfung der Python-Installation

Python --version

Überprüfung der Pip-Installation

pip -V

Installation von Matplotlib

Der folgende Befehl installiert das Matplotlib-Paket aus dem Python Package Index (PyPI).

python -m pip install matplotlib

Dieser Befehl lädt die entsprechenden Matplotlib-Pakete herunter und installiert sie. Nach Abschluss sollte eine Erfolgsmeldung zur Installation angezeigt werden.

Um sicherzustellen, dass Matplotlib erfolgreich installiert wurde, kann folgender Befehl in der Kommandozeile eingegeben werden, der die Matplotlib-Version anzeigt.

import matplotlib
matplotlib.__version__

Entwickler, die das unkompilierte Matplotlib-Paket installieren möchten, benötigen zusätzlich Zugriff auf den passenden Compiler auf ihrem System, sowie auf Abhängigkeiten, Setup-Skripte, Konfigurationsdateien und Patches.

Diese spezielle, unkompilierte Matplotlib-Installation kann jedoch komplex sein, insbesondere für Einsteiger. Warum also nicht einfach einen Einzeiler nutzen, um die Bibliothek innerhalb von Sekunden zu installieren? 🤔

Nach der Installation von Matplotlib sollte das Paket in der Umgebung importiert werden, um dessen Funktionen nutzen zu können.

Plotoptionen in Matplotlib

Matplotlib bietet umfangreiche Plotoptionen zur Visualisierung von Daten. Die Diagramme können durch verschiedene Themes, Farben und Palettenoptionen, die dem Nutzer zur Verfügung stehen, individualisiert werden.

Diese Plotoptionen umfassen:

#1. Balkendiagramme

Balkendiagramme eignen sich gut, um quantitative Vergleiche zwischen Werten innerhalb derselben Kategorie zu visualisieren.

Matplotlib stellt dieses Diagramm mit rechteckigen Balken dar, deren Längen und Höhen ihre proportionalen Werte repräsentieren. Die Balken können entweder horizontal oder vertikal angeordnet sein.

Matplotlib verwendet die Funktion plt.bar() zur Erstellung des Balkendiagramms.

Zusätzlich gibt es weitere Funktionen, um dieses Diagramm anzupassen. Beispielsweise beschriften plt.xlabel() und plt.ylabel() die x- bzw. y-Achse des Diagramms.

Mit plt.title() kann dem Diagramm ein Titel gegeben werden, während plt.savefig() den Plot speichert. Die wichtigste Funktion plot.show() zeigt den Plot an.

#2. Kreisdiagramme

Mit einem kreisförmigen statistischen Diagramm, das als Kreisdiagramm bezeichnet wird, kann die proportionale Verteilung der Elemente innerhalb derselben Kategorie dargestellt werden.

Kreisdiagramme zeigen Daten in Prozentform an. Die gesamte Diagrammfläche repräsentiert den Prozentsatz aller Daten, während die einzelnen Kuchenstücke die Anteile der Daten darstellen.

Matplotlib verwendet die Funktion plt.pie(), die die Parameter des Kreisdiagramms zeichnet und anpasst. Weitere Parameter, wie autopct, die den Wert des Kreisdiagramms auf eine Nachkommastelle genau ausgeben, sind nützlich.

Unternehmen können Kreisdiagramme nutzen, um relevante Informationen wie Betriebskosten, Umsätze oder Ressourcenzuweisungen darzustellen.

#3. Histogramm

Ein Histogramm visualisiert die Verteilung numerischer Daten. Es werden kontinuierliche Intervalle verwendet, um die Daten in verschiedene Abschnitte aufzuteilen.

Der Hauptunterschied zwischen einem Histogramm und einem Balkendiagramm liegt in der Art der Daten, die sie verarbeiten. Histogramme verarbeiten kontinuierliche Daten, während Balkendiagramme kategorielle Daten verarbeiten.

Matplotlib verwendet die Funktion hist(), die ein Array von zufälligen oder definierten Werten zur Erstellung des Histogramms verwendet.

#4. Liniendiagramme

Diese Diagramme eignen sich, um die Beziehung zwischen zwei Datenwerten, die als numerisch und kategorial definiert sind, auf einer X- und Y-Achse darzustellen.

Liniendiagramme sind hilfreich, um die Veränderung von Datenwerten über einen bestimmten Zeitraum zu verfolgen.

#5. Streudiagramme

Streudiagramme veranschaulichen die Beziehung, einschließlich der Korrelation, zwischen den Variablen in den Daten. Sie sind auch nützlich, um Ausreißer zu identifizieren.

Streudiagramme verwenden Punkte, um die Beziehung der Datenvariablen darzustellen und zu zeigen, wie sich eine Änderung einer Variable auf eine andere auswirken kann.

Erstellen von Diagrammen mit Matplotlib

Matplotlib verwendet verschiedene Funktionen zur Erstellung unterschiedlicher Diagramme. Es benötigt auch nur wenige Codezeilen für die Erstellung eines Plots.

Im Folgenden wird gezeigt, wie die verschiedenen Plotoptionen mit verschiedenen Funktionen in Matplotlib erstellt werden.

#1. Balkendiagramm mit Matplotlib

Wie bereits beschrieben, stellen Balkendiagramme Datenkategorien unter Verwendung von Balken und Achsen dar, wobei die Kategorien auf einer Achse und die entsprechenden Werte auf der anderen Achse abgebildet werden.

Die Funktion bar() in Matplotlib verwendet verschiedene Argumentlayouts, um die Darstellung der Balken zu definieren, wie unten gezeigt.

plt.bar(x, y, height, width, bottom, align)

Die Parameter x und y stehen für die x-Koordinaten- und y-Koordinatenwerte der Balken im Diagramm. Der Breitenparameter definiert die Breite des Balkens, während der Höhenparameter die Höhe des Balkens angibt.

Als Beispiel stellen wir die Anzahl von Hunden und Katzen in einem Tierheim namens x dar.

import matplotlib.pyplot as plt
import numpy as np

x = ["Cats", "Dogs"]
plt.xlabel("Cats and Dogs in Shelter")
plt.ylabel("No. of animals in Shelter")
plt.title("Number of cats and dogs in shelter x")
y = [300, 350]
plt.bar(x, y, color="black", width = 0.5)

Ausgabe:

Ausgabe des Balkendiagramms in Mathplotlib

Wie in obigem Beispiel kann die Farbe der Balken mit dem Attribut color definiert werden. Darüber hinaus werden die x- bzw. y-Achse mit plt.xlabel und plt.ylabel benannt, während plt.title dem Plot einen Titel gibt.

#2. Erstellung eines Kreisdiagramms

Matplotlib verwendet die Funktion pie(), die vom Modul pyplot bereitgestellt wird, um ein Kreisdiagramm zu zeichnen. Die Funktion nimmt die darzustellenden Daten in Arrayform entgegen.

Syntax:

matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)

Der Parameter colors bestimmt die Farbe der Kreisdiagrammsektoren. Es können Arrays von Werten verwendet werden, um eine Farbe für jedes Segment anzugeben.

Um weitere Details zu jedem Segment des Kreisdiagramms anzuzeigen, fügt das Argument autopct die numerischen Prozentwerte hinzu, die jedes Segment repräsentiert, wobei die String-Formatierungsnotation von Python verwendet wird. Das Argument explode akzeptiert ein Array von Werten, die bei 0.1 beginnen, um den Abstand des Segments von der Kreismitte zu definieren.

Erstellen wir ein Kreisdiagramm, das die Ressourcen in Prozent anzeigt, die einem bestimmten Projekt zugewiesen sind.

import matplotlib.pyplot as plt
import numpy as np

y = np.array([25, 10, 45, 20])
mylabels = ["w", "x", "y", "z"]
explodevalues = [0.1, 0.2, 0, 0]
colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red']
plt.title("Resources allocated for a random project")
plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True)
plt.show() 

Ausgabe:

Ausgabe des Kreisdiagramms in Mathplotlib

Das obige Diagramm zeigt ein Kreisdiagramm mit vier Abschnitten, die jeweils mit w, x, y und z gekennzeichnet sind. Die Explode-Werte definieren, wie weit die Segmente von der Kreismitte entfernt platziert werden.

Im obigen Diagramm ist x weiter entfernt, da sein Explosionswert höher ist als der Rest. Das Schattenattribut fügt dem Kreisdiagramm einen Schatten hinzu, wie im Bild zu sehen, während autopct den relativen Prozentsatz zum gesamten Kreisdiagramm festlegt, den jedes Segment repräsentiert.

#3. Erstellung eines Histogramms

Bei einem Histogramm wird eine Reihe von Intervallen verwendet, um den Bereich der gegebenen Werte auf der x-Achse darzustellen. Die y-Achse repräsentiert die Häufigkeitsinformationen.

Im Gegensatz zu anderen Diagrammen erfordert das Zeichnen eines Histogramms in Matplotlib einige vordefinierte Schritte, die zur Erstellung des Diagramms erforderlich sind.

Diese Schritte sind:

  • Erstellen Sie eine Gruppe (Bin) mit Bereichen aus den vorhandenen Datenwerten. Verwenden Sie dazu die Funktion np.random.normal(), die Zufallswerte generieren kann.
  • Verteilen Sie Werte in einen Wertebereich unter Verwendung einer Reihe von Intervallen.
  • Zählen Sie die Werte, die in jedes einzelne Intervall fallen.
  • Verwenden Sie die Funktion matplotlib.pyplot.hist(), um das Histogramm zu erstellen.
  • Die Funktion hist() nimmt mehrere Parameter entgegen, darunter:

    x – Repräsentiert die Array-Sequenz

    bins – Ist ein optionaler Parameter, der nicht überlappende Intervalle von Variablen darstellt, die ganze Zahlen oder eine Zeichenfolgenfolge enthalten können.

    range – Definiert den oberen und unteren Bereich der Gruppen (Bins)

    align – Steuert die Ausrichtung des Histogramms (links, rechts oder zentriert).

    color – Definiert die Farbe der Balken.

    rwidth – Legt die relative Breite der Balken im Histogramm in Bezug auf die Gruppen (Bins) fest.

    log – Der Log-Parameter definiert eine logarithmische Skala auf der Achse eines Histogramms.

    Das folgende Beispiel zeichnet ein Histogramm mit definierten Werten.

    from matplotlib import pyplot as plt
    
    x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5,  50, 60, 70, 80]
    
    plt.hist(x)
    plt.title('Histogram plot example')
    plt.xlabel('x axis')
    plt.ylabel('frequency')
    plt.show()
    

    Ausgabe:

    Ausgabe des Histogramms in Mathplotlib

    #4. Liniendiagramm mit Matplotlib

    Matplotlib verwendet die Unterbibliothek pyplot, die mit diversen Funktionen für die Implementierung ausgestattet ist.

    Die Funktion plot(), eine generische Funktion von pyplot, dient zum Zeichnen von Liniendiagrammen und verschiedenen anderen Typen von Liniendiagrammen, darunter Kurven und mehrfache Liniendiagramme. Die Erstellung dieser verschiedenen Diagrammtypen hängt von den Werten ab, die an die Y-Achse übergeben werden.

    Beim Erstellen der Plots, importieren Sie matplotlib.pyplot und NumPy, die für das Zeichnen der Diagramme zuständig sind. Die plot(x,y)-Methode erstellt das Liniendiagramm, indem Zufallswerte an die x- und y-Argumente übergeben werden.

    Zusätzlich kann eine Beschriftungsvariable übergeben werden, die den Plot beschriftet. Die Titelfunktion benennt den Titel des Diagramms, während die xlabel- und ylabel-Funktionen die Achsen benennen. Die Funktion show() zeigt den Plot an.

    Zum Beispiel:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0, 5, 10)
    
    y = 3*x + 2
    plt.title('Line plot example')
    plt.xlabel('x axis')
    plt.ylabel('y axis')
    plt.plot(x, y)
    plt.show()

    Ergebnis:

    Ausgabe des Liniendiagramms in Mathplotlib

    Das np.linspace-Attribut gibt eine Menge gleichmäßig verteilter Zahlen über ein bestimmtes Intervall für die x-Werte zurück. Dadurch wird ein Array mit 10 Werten im Bereich von 0 bis 5 erstellt. Die y-Werte werden aus der Gleichung erstellt, die entsprechende x-Werte verwendet.

    Erstellung von Streudiagrammen

    Matplotlib verwendet die Methode scatter(), um dieses Diagramm zu erstellen. Diese Methode akzeptiert die folgenden Parameter.

    matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None) 

    Die Parameter x_axis_data und y_axis_data müssen im Gegensatz zu den übrigen Parametern, die optional sein können und den Wert None haben können, definiert werden. Während das Argument x_axis_data ein Datenarray für die x-Achse definiert, legt das Argument y_axis_data ein Datenarray für die y-Achse fest.

    Beispiel für ein Streudiagramm in Matplotlib

    import matplotlib.pyplot as plt
     
    x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16]
     
    y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35]
    plt.title('Scatter plot example')
    plt.xlabel('x variable')
    plt.ylabel('y variable')
    plt.scatter(x, y, c ="green")
     
    # To show the plot
    plt.show()

    Die Ausgabe sieht wie folgt aus:

    Ausgabe des Streudiagramms in Mathplotlib

    Was ist subplot() in Matplotlib?

    Die Funktion subplot() kann verwendet werden, um mehrere Plots in einem einzigen Matplotlib-Fenster zu zeichnen. Dies ermöglicht das Betrachten und Vergleichen mehrerer Plots innerhalb eines Fensters.

    Diese Funktion gibt ein Tupel mit drei Argumenten zurück: Zeilen und Spalten als erstes bzw. zweites Argument und den Index des aktuellen Diagramms als drittes Argument.

    Die Zeilen und Spalten definieren das Layout der Matplotlib eindeutig.

    plt.subplot(2, 1, 1) zeichnet zum Beispiel ein Matplotlib-Fenster mit zwei Zeilen und einer Spalte, und dieses Diagramm ist das erste Diagramm.

    Andererseits zeigt plt.subplot(2, 1, 2) einen zweiten Plot mit zwei Zeilen und einer Spalte an.

    Werden diese beiden Diagramme gezeichnet, werden sie wie im folgenden Beispiel übereinander dargestellt.

    import matplotlib.pyplot as plt
    import numpy as np
    
    #plot 1:
    x = np.array([2, 4, 6, 8])
    y = np.array([3, 6, 9, 12])
    
    plt.subplot(2, 1, 1)
    plt.plot(x,y)
    
    #plot 2:
    x = np.array([3, 6, 9, 12])
    y = np.array([1, 2, 3, 4])
    
    plt.subplot(2, 1, 2)
    plt.plot(x,y)
    
    plt.show()

    Die Ausgabe des obigen Beispiels sieht wie folgt aus.

    Ein weiteres Beispiel verwendet die Subplot-Funktion, um zwei Zahlen mit einer Zeile und zwei Spalten zu zeichnen. Die Diagramme werden dadurch nebeneinander angezeigt.

    import matplotlib.pyplot as plt
    import numpy as np
    
    #plot 1:
    x = np.array([2, 4, 6, 8])
    y = np.array([3, 6, 9, 12])
    
    plt.subplot(1, 2, 1)
    plt.plot(x,y)
    
    #plot 2:
    x = np.array([3, 6, 9, 12])
    y = np.array([1, 2, 3, 4])
    
    plt.subplot(1, 2, 2)
    plt.plot(x,y)
    
    plt.show()

    Das obige Beispiel zeigt folgendes Ergebnis.

    Das war eine interessante Interaktion, findest du nicht?😃

    Abschließende Worte

    Matplotlib ist eine weit verbreitete Visualisierungsbibliothek in Python. Ihre Interaktivität und die einfache Handhabung, auch für Anfänger, machen sie zu einem noch besseren Werkzeug für das Zeichnen in Python.

    In diesem Artikel wurden Beispiele für die verschiedenen Diagramme behandelt, die mit den Funktionen von Matplotlib erstellt werden können, einschließlich Kreisdiagramme, Balkendiagramme, Histogramme und Streudiagramme.

    Natürlich verfügt Python über mehrere andere Bibliotheken, die von Experten für maschinelles Lernen und Datenwissenschaftlern zur Erstellung von Visualisierungen genutzt werden können.

    Weitere Diagramme, die Sie mit Matplotlib erstellen können, sowie die entsprechenden Funktionen, können Sie gerne selbst erkunden.

    Viel Spaß beim Zeichnen! 📉📊