Matplotlib verschachtelte GridSpecs

Beginner

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

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.