Data Visualization

Matplotlib Subplot-Größen meistern: Drei effektive Methoden

Spread the love

Matplotlib bietet leistungsstarke Werkzeuge zur Erstellung von Visualisierungen, und die Anpassung der Subplot-Größen ist der Schlüssel zur effektiven Kommunikation. Dieser Artikel untersucht drei Methoden zum Erstellen von Subplots mit unterschiedlichen Größen in Matplotlib und bietet für jede Methode klare Beispiele und Erklärungen.

Inhaltsverzeichnis

Verwendung von gridspec für flexible Subplot-Layouts

Das Modul matplotlib.gridspec bietet den flexibelsten Ansatz zum Erstellen von Subplots unterschiedlicher Größe. Es ermöglicht Ihnen, ein Raster zu definieren und dann Subplots bestimmten Bereichen dieses Rasters zuzuweisen, wobei deren relative Größen mithilfe von height_ratios und width_ratios gesteuert werden.


import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure(figsize=(10, 6))
gs = gridspec.GridSpec(nrows=2, ncols=2, height_ratios=[2, 1], width_ratios=[1, 2])

ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :])  # Über beide Spalten hinweg

ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])

plt.tight_layout()
plt.show()

Dieser Code erstellt ein 2×2-Raster, wobei die obere Reihe doppelt so hoch wie die untere Reihe und die rechte Spalte doppelt so breit wie die linke ist. Jeder Subplot wird dann seinem zugewiesenen Bereich hinzugefügt.

Nutzen von gridspec_kw für prägnante Steuerung

Für einfachere Layouts bietet das Argument gridspec_kw innerhalb von plt.subplots() eine prägnantere Alternative. Es integriert die Gridspec-Funktionalität direkt, ohne dass eine explizite gridspec-Objekt-Erstellung erforderlich ist.


import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2, figsize=(10, 6), gridspec_kw={'height_ratios': [2, 1], 'width_ratios': [1, 2]})

axes[0, 0].plot([1, 2, 3], [4, 5, 6])
axes[0, 1].plot([1, 2, 3], [6, 4, 5])
axes[1, 0].plot([1, 2, 3], [2, 4, 1])
axes[1, 1].plot([1, 2, 3], [5, 3, 1])

plt.tight_layout()
plt.show()

Dies erreicht ein ähnliches Ergebnis wie das gridspec-Beispiel, jedoch mit einer saubereren Syntax. Beachten Sie, dass jeder Subplot hier eine einzelne Zelle einnimmt; die Überbrückung mehrerer Zellen erfordert den flexibleren gridspec-Ansatz.

Präzise Platzierung mit subplot2grid

Die Funktion subplot2grid bietet präzise Kontrolle über die Platzierung von Subplots mithilfe von Zeilen- und Spaltenindizes sowie rowspan– und colspan-Attributen, um die Größe und Position jedes Subplots innerhalb des Rasters zu definieren.


import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 6))

ax1 = plt.subplot2grid((2, 2), (0, 0), rowspan=1, colspan=1)
ax2 = plt.subplot2grid((2, 2), (0, 1), rowspan=1, colspan=2)
ax3 = plt.subplot2grid((2, 2), (1, 0), rowspan=1, colspan=2)

ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])

plt.tight_layout()
plt.show()

Obwohl leistungsstark, kann subplot2grid für komplexe Layouts weniger lesbar werden. Wählen Sie die Methode, die am besten zu Ihren Bedürfnissen passt: gridspec für Flexibilität, gridspec_kw für prägnante einfache Layouts und subplot2grid für präzise Kontrolle über die Positionen einzelner Subplots.

Denken Sie daran, immer plt.tight_layout() zu verwenden, um überlappende Elemente zu vermeiden und ein sauberes und professionelles Erscheinungsbild zu gewährleisten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert