Konturplot für unregelmäßiges Datennetz

PythonPythonBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab wird gezeigt, wie man in Python mithilfe von Matplotlib einen Konturplot von unregelmäßig verteilten Daten erstellt. Der Konturplot zeigt die 2D-Verteilung der Datenwerte mithilfe von Iso-Konturen oder Konturlinien. In diesem Beispiel werden wir einen Konturplot von unregelmäßig verteilten Daten, die auf einem regulären Gitter interpoliert wurden, mit einem Triconturplot für ein unstrukturiertes dreieckiges Gitter vergleichen.

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 der 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, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken für dieses Beispiel: matplotlib.pyplot und numpy. Darüber hinaus importieren wir matplotlib.tri für die Triangulation der Daten.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.tri as tri

Generieren von Zufallsdaten

Wir generieren Zufallsdaten mit der np.random.uniform-Methode von NumPy. Wir generieren npts = 200 Datenpunkte mit x- und y-Werten zwischen -2 und 2. Wir berechnen auch die z-Werte mit der Funktion z = x * np.exp(-x**2 - y**2).

np.random.seed(19680801)
npts = 200
x = np.random.uniform(-2, 2, npts)
y = np.random.uniform(-2, 2, npts)
z = x * np.exp(-x**2 - y**2)

Interpolation auf einem Gitter

Wir erstellen einen Konturplot von unregelmäßig verteilten Datenkoordinaten durch Interpolation auf einem Gitter. Wir erstellen zunächst Gitterwerte für x und y mit np.linspace. Anschließend interpolieren wir die Daten (x, y) linear auf einem von (xi, yi) definierten Gitter mit tri.LinearTriInterpolator. Wir plotten die interpolierten Daten mit der üblichen axes.Axes.contour.

ngridx = 100
ngridy = 200
xi = np.linspace(-2.1, 2.1, ngridx)
yi = np.linspace(-2.1, 2.1, ngridy)

triang = tri.Triangulation(x, y)
interpolator = tri.LinearTriInterpolator(triang, z)
Xi, Yi = np.meshgrid(xi, yi)
zi = interpolator(Xi, Yi)

fig, ax1 = plt.subplots()
cntr1 = ax1.contourf(xi, yi, zi, levels=14, cmap="RdBu_r")
ax1.plot(x, y, 'ko', ms=3)
ax1.set(xlim=(-2, 2), ylim=(-2, 2))
ax1.set_title('Contour Plot of Irregularly Spaced Data Interpolated on a Grid')
fig.colorbar(cntr1, ax=ax1)
plt.show()

Tricontour

Wir plotten die gleichen Daten mit einem Tricontour-Plot, indem wir die ungeordneten, unregelmäßig verteilten Koordinaten direkt an axes.Axes.tricontour übergeben.

fig, ax2 = plt.subplots()
cntr2 = ax2.tricontourf(x, y, z, levels=14, cmap="RdBu_r")
ax2.plot(x, y, 'ko', ms=3)
ax2.set(xlim=(-2, 2), ylim=(-2, 2))
ax2.set_title('Tricontour Plot of Irregularly Spaced Data')
fig.colorbar(cntr2, ax=ax2)
plt.show()

Zusammenfassung

In diesem Lab wurde gezeigt, wie man in Python mithilfe von Matplotlib einen Konturplot von unregelmäßig verteilten Daten erstellt. Wir haben einen Konturplot von unregelmäßig verteilten Daten, die auf einem regulären Gitter interpoliert wurden, mit einem Tricontour-Plot für ein unstrukturiertes Dreiecksgitter verglichen. Die axes.Axes.contour- und axes.Axes.tricontour-Methoden wurden verwendet, um die Konturplots zu erstellen.