Einführung
In diesem Lab lernst du, wie du verschachtelte .GridSpecs in Matplotlib verwenden kannst, um ein Gitter von Teilplots mit unterschiedlichen Größen zu erstellen. Dies ist nützlich, wenn du eine komplexe Layout von Plots erstellen möchtest und die Größe und den Abstand jedes Plots steuern möchtest.
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 öffnen.
Manchmal musst du 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 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.
Bibliotheken importieren
Zunächst müssen wir die erforderlichen Bibliotheken importieren. Wir werden matplotlib.pyplot verwenden, um die Plots zu erstellen, und numpy, um einige Daten zu generieren, die geplottet werden sollen.
import matplotlib.pyplot as plt
import numpy as np
Daten erstellen
In diesem Schritt werden wir einige Daten erstellen, die geplottet werden sollen. Wir werden die Funktion squiggle_xy verwenden, um einige Sinus- und Kosinuswellen mit unterschiedlichen Frequenzen zu generieren.
def squiggle_xy(a, b, c, d):
i = np.arange(0.0, 2*np.pi, 0.05)
return np.sin(i*a)*np.cos(i*b), np.sin(i*c)*np.cos(i*d)
Figur und äußeres Gitter erstellen
Als nächstes werden wir die Figur und das äußere Gitter mit der Funktion add_gridspec erstellen. Wir werden ein 4x4-Gitter erstellen, wobei keine Leerraum zwischen den Teilplots vorhanden ist.
fig = plt.figure(figsize=(8, 8))
outer_grid = fig.add_gridspec(4, 4, wspace=0, hspace=0)
Innere Gitter und Teilplots erstellen
In diesem Schritt werden wir die inneren Gitter und Teilplots mit verschachtelten .GridSpecs erstellen. Wir werden durch jede Zelle im äußeren Gitter iterieren und für jede Zelle ein 3x3-Gitter erstellen.
for a in range(4):
for b in range(4):
## Gitter innerhalb eines Gitters
inner_grid = outer_grid[a, b].subgridspec(3, 3, wspace=0, hspace=0)
axs = inner_grid.subplots() ## Erstellt alle Teilplots für das innere Gitter.
for (c, d), ax in np.ndenumerate(axs):
ax.plot(*squiggle_xy(a + 1, b + 1, c + 1, d + 1))
ax.set(xticks=[], yticks=[])
Nur die äußeren Rahmlinien anzeigen
In diesem Schritt werden wir die Rahmlinien für die inneren Teilplots entfernen und nur die äußeren Rahmlinien anzeigen. Dadurch wird der Plot sauberer aussehen.
for ax in fig.get_axes():
ss = ax.get_subplotspec()
ax.spines.top.set_visible(ss.is_first_row())
ax.spines.bottom.set_visible(ss.is_last_row())
ax.spines.left.set_visible(ss.is_first_col())
ax.spines.right.set_visible(ss.is_last_col())
Zeige den Plot an
Schließlich werden wir den Plot mit der Funktion show() anzeigen.
plt.show()
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie verschachtelte .GridSpecs in Matplotlib verwenden, um ein Gitter von Teilplots mit unterschiedlichen Größen zu erstellen. Wir haben auch gelernt, wie man Daten mit numpy generiert und wie man die Rahmlinien der Teilplots anpasst. Mit diesen Kenntnissen können Sie komplexe Layouts von Plots erstellen und deren Größe und Abstand präzise steuern.