Maskierte Konturplots mit Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Einführung

Beim Datenvisualisierung werden Konturplots üblicherweise verwendet, um dreidimensionale Daten auf einer zweidimensionalen Ebene darzustellen. Matplotlib ist eine weit verbreitete Plotbibliothek in Python, die Funktionen zum Erstellen verschiedener Plottypen, einschließlich Konturplots, bietet. In diesem Lab werden wir lernen, wie man maskierte Konturplots mit Matplotlib erstellt und wie man den Unterschied zwischen aktivierten und deaktivierten Eckmasken veranschaulicht.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback ab, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

Um maskierte Konturplots mit Matplotlib zu erstellen, müssen wir die folgenden Bibliotheken importieren:

  • numpy: Eine Bibliothek für die Python-Programmiersprache, die Unterstützung für große, mehrdimensionale Arrays und Matrizen bietet.
  • matplotlib.pyplot: Eine Sammlung von Funktionen, die eine einfache Schnittstelle zum Erstellen verschiedener Plottypen bietet.
import matplotlib.pyplot as plt
import numpy as np

Erstellen von Daten zum Plotten

In diesem Schritt werden wir Daten erstellen, die auf einem Konturplot geplottet werden sollen. Wir verwenden die Funktion np.meshgrid(), um ein Gitter von Punkten zu erstellen, und berechnen dann die z-Werte mit Hilfe der Sinus- und Kosinusfunktionen.

## Data to plot.
x, y = np.meshgrid(np.arange(7), np.arange(10))
z = np.sin(0.5 * x) * np.cos(0.52 * y)

Maskieren der Daten

In diesem Schritt werden wir einige der z-Werte mit einer booleschen Maske maskieren. Wir erstellen ein mask-Array mit der Funktion np.zeros_like() und setzen dann einige der Werte auf True, um sie zu maskieren.

## Mask various z values.
mask = np.zeros_like(z, dtype=bool)
mask[2, 3:5] = True
mask[3:5, 4] = True
mask[7, 2] = True
mask[5, 0] = True
mask[0, 6] = True
z = np.ma.array(z, mask=mask)

Erstellen des Plots

In diesem Schritt werden wir den maskierten Konturplot mit der Funktion contourf() erstellen. Wir übergeben die x, y und z-Arrays an diese Funktion, zusammen mit dem Argument corner_mask, das auf True oder False gesetzt wird, je nachdem, welchen Plottyp wir erstellen möchten.

corner_masks = [False, True]
fig, axs = plt.subplots(ncols=2)
for ax, corner_mask in zip(axs, corner_masks):
    cs = ax.contourf(x, y, z, corner_mask=corner_mask)
    ax.contour(cs, colors='k')
    ax.set_title(f'{corner_mask=}')

    ## Plot grid.
    ax.grid(c='k', ls='-', alpha=0.3)

    ## Indicate masked points with red circles.
    ax.plot(np.ma.array(x, mask=~mask), y, 'ro')

plt.show()

Interpretation der Ergebnisse

In diesem Schritt werden wir die Ergebnisse des maskierten Konturplots interpretieren. Wir können beobachten, dass der Parameter corner_mask steuert, ob die Eckpunkte des Plots maskiert werden oder nicht. Wenn corner_mask auf True gesetzt ist, werden die Ecken des Konturplots maskiert, während sie nicht maskiert sind, wenn es auf False gesetzt ist. Wir können auch sehen, dass die maskierten Punkte durch rote Kreise gekennzeichnet sind.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man maskierte Konturplots mit Matplotlib erstellt. Wir haben zunächst die erforderlichen Bibliotheken importiert und dann die Daten zum Plotten erstellt. Anschließend haben wir einige der z-Werte mit einer booleschen Maske maskiert und den Konturplot mit der Funktion contourf() erstellt. Schließlich haben wir die Ergebnisse interpretiert und den Unterschied zwischen aktivierten und deaktivierten Eckmasken beobachtet.