Streamplot mit Matplotlib in Python erstellen

MatplotlibMatplotlibBeginner
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 Tutorial führen wir Sie durch den Prozess der Erstellung eines Streamplots mit Matplotlib in Python. Ein Streamplot ist ein zweidimensionales Vektorfeld, das eine Reihe von Strömungslinien anzeigt. Es wird verwendet, um die Strömung von Fluiden und andere Vektorfelder zu visualisieren. In diesem Tutorial zeigen wir Ihnen, wie Sie einen Streamplot mit variierender Dichte, Farbe und Linienbreite erstellen, sowie die Startpunkte der Strömungslinien steuern.

Tipps für die VM

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

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.

Bibliotheken importieren

Bevor wir beginnen, müssen wir die erforderlichen Bibliotheken importieren. In diesem Tutorial werden wir die Bibliotheken Numpy und Matplotlib verwenden. Numpy wird für numerische Operationen verwendet und Matplotlib für die Datenvisualisierung.

import matplotlib.pyplot as plt
import numpy as np

Daten erstellen

Wir werden die Daten für unseren Streamplot mit der Numpy-Bibliothek erstellen. In diesem Beispiel werden wir ein Gitternetz mit 100 Punkten in beiden Richtungen erstellen und die U- und V-Komponenten unseres Vektorfelds berechnen.

w = 3
Y, X = np.mgrid[-w:w:100j, -w:w:100j]
U = -1 - X**2 + Y
V = 1 + X - Y**2
speed = np.sqrt(U**2 + V**2)

Variierende Dichte

In diesem Schritt werden wir einen Streamplot mit variierender Dichte erstellen. Der Parameter density steuert die Anzahl der zu zeichnenden Strömungslinien. Höhere Werte führen zu mehr Strömungslinien.

plt.streamplot(X, Y, U, V, density=[0.5, 1])
plt.title('Varying Density')
plt.show()

Variierende Farbe

In diesem Schritt werden wir einen Streamplot mit variierender Farbe erstellen. Der Parameter color nimmt ein 2D-Array entgegen, das die Größe des Vektorfelds repräsentiert. Hier verwenden wir die U-Komponente des Vektorfelds als Farbe.

strm = plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap='autumn')
plt.colorbar(strm.lines)
plt.title('Varying Color')
plt.show()

Variierende Linienbreite

In diesem Schritt werden wir einen Streamplot mit variierender Linienbreite erstellen. Der Parameter linewidth steuert die Breite der Strömungslinien. Hier verwenden wir das zuvor berechnete speed-Array, um die Linienbreite zu variieren.

lw = 5*speed / speed.max()
plt.streamplot(X, Y, U, V, density=0.6, color='k', linewidth=lw)
plt.title('Varying Line Width')
plt.show()

Kontrolle über Startpunkte

In diesem Schritt werden wir einen Streamplot mit kontrollierten Startpunkten erstellen. Der Parameter start_points nimmt ein 2D-Array entgegen, das die Startpunkte der Strömungslinien repräsentiert.

seed_points = np.array([[-2, -1, 0, 1, 2, -1], [-2, -1, 0, 1, 2, 2]])

strm = plt.streamplot(X, Y, U, V, color=U, linewidth=2,
                      cmap='autumn', start_points=seed_points.T)
plt.colorbar(strm.lines)
plt.title('Controlling Starting Points')
plt.plot(seed_points[0], seed_points[1], 'bo')
plt.xlim(-w, w)
plt.ylim(-w, w)
plt.show()

Streamplot mit Maskierung

In diesem Schritt werden wir einen Streamplot mit Maskierung erstellen. Wir werden eine Maske erstellen und sie auf die U-Komponente unseres Vektorfelds anwenden. Der maskierte Bereich wird von den Strömungslinien übersprungen.

mask = np.zeros(U.shape, dtype=bool)
mask[40:60, 40:60] = True
U[:20, :20] = np.nan
U = np.ma.array(U, mask=mask)

plt.streamplot(X, Y, U, V, color='r')
plt.title('Streamplot with Masking')
plt.imshow(~mask, extent=(-w, w, -w, w), alpha=0.5, cmap='gray', aspect='auto')
plt.gca().set_aspect('equal')
plt.show()

Ununterbrochene Strömungslinien

In diesem Schritt werden wir einen Streamplot mit ununterbrochenen Strömungslinien erstellen. Der Parameter broken_streamlines steuert, ob die Strömungslinien abgebrochen werden sollen, wenn sie die Grenze der Linien innerhalb einer einzelnen Gitze-Zelle überschreiten.

plt.streamplot(X, Y, U, V, broken_streamlines=False)
plt.title('Streamplot with Unbroken Streamlines')
plt.show()

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man mit Matplotlib in Python einen Streamplot erstellt. Wir haben verschiedene Parameter der streamplot-Funktion behandelt, darunter variierende Dichte, Farbe und Linienbreite. Wir haben auch gelernt, wie man die Startpunkte der Strömungslinien steuert, Masken anwendet und ununterbrochene Strömungslinien darstellt.