Interpolation von Dreiecksgitter zu Quadgitter

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 Lab lernst du, wie du die Matplotlib-Bibliothek in Python verwendest, um Daten von einem Dreiecksgitter auf ein Quadgitter zu interpolieren. Wir beginnen mit der Erstellung einer Triangulation und interpolieren dann die Daten mit linearen und kubischen Methoden. Schließlich werden wir die Ergebnisse plotten.

Tipps für die VM

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

Manchmal musst du 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 du während des Lernens Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlottingDataGroup(["Plotting Data"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlotCustomizationGroup(["Plot Customization"]) matplotlib(("Matplotlib")) -.-> matplotlib/SpecializedPlotsGroup(["Specialized Plots"]) python/BasicConceptsGroup -.-> python/comments("Comments") matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("Line Plots") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") matplotlib/PlotCustomizationGroup -.-> matplotlib/titles_labels("Adding Titles and Labels") matplotlib/SpecializedPlotsGroup -.-> matplotlib/contour_plots("Contour Plots") python/FileHandlingGroup -.-> python/with_statement("Using with Statement") subgraph Lab Skills python/comments -.-> lab-49009{{"Interpolation von Dreiecksgitter zu Quadgitter"}} matplotlib/line_plots -.-> lab-49009{{"Interpolation von Dreiecksgitter zu Quadgitter"}} python/lists -.-> lab-49009{{"Interpolation von Dreiecksgitter zu Quadgitter"}} python/tuples -.-> lab-49009{{"Interpolation von Dreiecksgitter zu Quadgitter"}} matplotlib/titles_labels -.-> lab-49009{{"Interpolation von Dreiecksgitter zu Quadgitter"}} matplotlib/contour_plots -.-> lab-49009{{"Interpolation von Dreiecksgitter zu Quadgitter"}} python/with_statement -.-> lab-49009{{"Interpolation von Dreiecksgitter zu Quadgitter"}} end

Triangulation erstellen

Der erste Schritt besteht darin, eine Triangulation mit den gegebenen x-, y- und Dreiecksdaten zu erstellen. Anschließend werden wir die Triangulation plotten.

## Triangulation erstellen.
x = np.asarray([0, 1, 2, 3, 0.5, 1.5, 2.5, 1, 2, 1.5])
y = np.asarray([0, 0, 0, 0, 1.0, 1.0, 1.0, 2, 2, 3.0])
triangles = [[0, 1, 4], [1, 2, 5], [2, 3, 6], [1, 5, 4], [2, 6, 5], [4, 5, 7],
             [5, 6, 8], [5, 8, 7], [7, 8, 9]]
triang = mtri.Triangulation(x, y, triangles)

## Die Triangulation plotten.
plt.triplot(triang, 'ko-')
plt.title('Triangular grid')
plt.show()

Daten mit linearer Methode interpolieren

Der zweite Schritt besteht darin, die Daten mit der linearen Methode zu interpolieren. Wir werden ein regelmäßiges Quadgitter erstellen und dann die Methode LinearTriInterpolator verwenden, um die Daten zu interpolieren. Schließlich werden wir die interpolierten Daten plotten.

## Interpoliere auf ein regelmäßiges Quadgitter.
z = np.cos(1.5 * x) * np.cos(1.5 * y)
xi, yi = np.meshgrid(np.linspace(0, 3, 20), np.linspace(0, 3, 20))

## Interpoliere mit linearer Methode.
interp_lin = mtri.LinearTriInterpolator(triang, z)
zi_lin = interp_lin(xi, yi)

## Plotten der interpolierten Daten.
plt.contourf(xi, yi, zi_lin)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Linear interpolation")
plt.show()

Daten mit kubischer Methode interpolieren

Der dritte Schritt besteht darin, die Daten mit der kubischen Methode zu interpolieren. Wir werden die Methode CubicTriInterpolator mit dem Parameter kind auf 'geom' oder'min_E' gesetzt verwenden. Schließlich werden wir die interpolierten Daten plotten.

## Interpoliere mit kubischer Methode mit kind=geom.
interp_cubic_geom = mtri.CubicTriInterpolator(triang, z, kind='geom')
zi_cubic_geom = interp_cubic_geom(xi, yi)

## Plotten der interpolierten Daten.
plt.contourf(xi, yi, zi_cubic_geom)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='geom'")
plt.show()

## Interpoliere mit kubischer Methode mit kind=min_E.
interp_cubic_min_E = mtri.CubicTriInterpolator(triang, z, kind='min_E')
zi_cubic_min_E = interp_cubic_min_E(xi, yi)

## Plotten der interpolierten Daten.
plt.contourf(xi, yi, zi_cubic_min_E)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='min_E'")
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die Matplotlib-Bibliothek in Python verwendet, um Daten von einem Dreiecksgitter auf ein Quadgitter zu interpolieren. Wir haben begonnen, indem wir eine Triangulation erstellt haben, und haben dann die Daten mit linearen und kubischen Methoden interpoliert. Schließlich haben wir die Ergebnisse geplottet.