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 - Nutzen von
gridspec_kw
für prägnante Steuerung - Präzise Platzierung mit
subplot2grid
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.