Unterdiagramme
Die Funktion subplots()
aus pyplot
erfüllt genau diesen Zweck. Sie wurde bereits im ersten Abschnitt verwendet, um eine Zeichenfläche zu erstellen, und wird nun ausführlicher betrachtet.
Zeilen und Spalten
Die wichtigsten Argumente dieser Funktion sind nrows
und ncolumns
, die die Anzahl der Zeilen und Spalten im Subplot-Raster festlegen. Standardmäßig sind beide auf 1 gesetzt, sodass nur ein einzelnes Diagramm (Axes
) erzeugt wird.
Die Funktion subplots()
gibt ein Figure
-Objekt und entweder ein einzelnes Axes
-Objekt oder ein Array von Axes
-Objekten zurück, abhängig von der Größe des Rasters.
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Ein 2 mal 2 Subplot-Raster wurde erstellt.
Da es mehrere Subplots gibt, gibt subplots
ein Array von Axes
-Objekten zurück, das üblicherweise in einer Variablen namens axs
gespeichert wird (Singular ax
steht für ein einzelnes Diagramm).
In diesem Fall ist axs
ein zweidimensionales Array, daher werden sowohl ein Zeilen- als auch ein Spaltenindex benötigt, um auf ein bestimmtes Subplot zuzugreifen.
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Creating a different plot for each Axes object axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
Die erste Zeile (Zeile 0) enthält zwei Liniendiagramme, und die zweite Zeile (Zeile 1) enthält zwei Streudiagramme.
Da jeder Plot auf einem separaten Subplot platziert ist, können plt.plot()
oder plt.scatter()
nicht direkt verwendet werden. Die geeignete Vorgehensweise ist, die jeweilige Methode auf jedem einzelnen Axes
-Objekt aufzurufen.
Umwandlung in ein 1D-Array
Es ist ebenfalls möglich, die Methode .ravel()
zu verwenden, um ein 2D-Axes
-Array in ein 1D zusammenhängendes, flaches Array umzuwandeln:
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Flattening axs to a 1D array for easier indexing axs = axs.ravel() # Creating a different plot for each Axes object axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
Mit einem 2x2-Array wandelt axs.ravel()
dieses in ein 1D-Array mit vier Elementen um.
Achsen teilen
Die Funktion subplots()
verfügt außerdem über die Parameter sharex
und sharey
. Sie steuern, ob die x- oder y-Achsen zwischen den Subplots geteilt werden. Beide sind standardmäßig auf False
gesetzt.
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Create a 2x2 subplot grid with shared x-axis across all subplots fig, axs = plt.subplots(2, 2, sharex=True) # Flatten axs array for easier indexing axs = axs.ravel() # Plotting different data on each subplot axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
Die Einstellung sharex=True
teilt die x-Achse über alle Subplots hinweg, was hier nützlich ist, da alle Subplots die gleichen x-Achsenwerte verwenden.
Sie können sharex
oder sharey
auch auf 'row'
setzen, um die Achse innerhalb jeder Subplot-Zeile zu teilen, oder auf 'col'
, um sie innerhalb jeder Subplot-Spalte zu teilen.
Wie üblich können Sie gerne mehr in der
subplots()
-Dokumentation nachlesen, falls Sie möchten.
Swipe to start coding
- Die korrekte Funktion zur Erstellung eines Subplot-Rasters verwenden.
- Das Raster soll 3 Zeilen und 1 Spalte haben (die ersten beiden Parameter angeben).
- Das rechte Schlüsselwortargument angeben, sodass die x-Achse für alle Subplots gemeinsam genutzt wird.
- Das Ergebnis der Funktion zur Erstellung der Subplots in den Variablen
fig
undaxs
speichern (von links nach rechts). - Das erste Liniendiagramm für
data_linear
in der ersten Zeile (Zeile0
) des Subplot-Rasters platzieren. - Das zweite Liniendiagramm für
data_squared
in der zweiten Zeile (Zeile1
) des Subplot-Rasters platzieren. - Das dritte Liniendiagramm für
data_exp
in der dritten Zeile (Zeile2
) des Subplot-Rasters platzieren.
Lösung
Danke für Ihr Feedback!