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 genauer 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 Axes-Objekt oder ein Array von Axes-Objekten zurück, abhängig von der Größe des Rasters.
12345import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Ein 2-zu-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.
12345678910111213141516import 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 jedes Diagramm auf einem separaten Subplot platziert ist, können plt.plot() oder plt.scatter() nicht direkt verwendet werden. Die geeignete Vorgehensweise ist, die entsprechende Methode für jedes einzelne 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:
12345678910111213141516171819import 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. Diese steuern, ob die x- oder y-Achsen zwischen den Subplots geteilt werden. Beide sind standardmäßig auf False gesetzt.
12345678910111213141516171819import 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 von sharex=True teilt die x-Achse über alle Unterdiagramme hinweg, was hier nützlich ist, da alle Unterdiagramme die gleichen x-Achsenwerte verwenden.
Sie können sharex oder sharey auch auf 'row' setzen, um die Achse innerhalb jeder Unterdiagrammzeile zu teilen, oder auf 'col', um sie innerhalb jeder Unterdiagrammspalte 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 rechteste Schlüsselwortargument angeben, sodass die x-Achse für alle Subplots gemeinsam genutzt wird.
- Das Ergebnis der Funktion zum Erstellen der Subplots in den Variablen
figundaxsspeichern (von links nach rechts). - Das erste Liniendiagramm für
data_linearin der ersten Zeile (Zeile0) des Subplot-Rasters platzieren. - Das zweite Liniendiagramm für
data_squaredin der zweiten Zeile (Zeile1) des Subplot-Rasters platzieren. - Das dritte Liniendiagramm für
data_expin der dritten Zeile (Zeile2) des Subplot-Rasters platzieren.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.85
Unterdiagramme
Swipe um das Menü anzuzeigen
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 genauer 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 Axes-Objekt oder ein Array von Axes-Objekten zurück, abhängig von der Größe des Rasters.
12345import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Ein 2-zu-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.
12345678910111213141516import 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 jedes Diagramm auf einem separaten Subplot platziert ist, können plt.plot() oder plt.scatter() nicht direkt verwendet werden. Die geeignete Vorgehensweise ist, die entsprechende Methode für jedes einzelne 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:
12345678910111213141516171819import 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. Diese steuern, ob die x- oder y-Achsen zwischen den Subplots geteilt werden. Beide sind standardmäßig auf False gesetzt.
12345678910111213141516171819import 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 von sharex=True teilt die x-Achse über alle Unterdiagramme hinweg, was hier nützlich ist, da alle Unterdiagramme die gleichen x-Achsenwerte verwenden.
Sie können sharex oder sharey auch auf 'row' setzen, um die Achse innerhalb jeder Unterdiagrammzeile zu teilen, oder auf 'col', um sie innerhalb jeder Unterdiagrammspalte 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 rechteste Schlüsselwortargument angeben, sodass die x-Achse für alle Subplots gemeinsam genutzt wird.
- Das Ergebnis der Funktion zum Erstellen der Subplots in den Variablen
figundaxsspeichern (von links nach rechts). - Das erste Liniendiagramm für
data_linearin der ersten Zeile (Zeile0) des Subplot-Rasters platzieren. - Das zweite Liniendiagramm für
data_squaredin der zweiten Zeile (Zeile1) des Subplot-Rasters platzieren. - Das dritte Liniendiagramm für
data_expin der dritten Zeile (Zeile2) des Subplot-Rasters platzieren.
Lösung
Danke für Ihr Feedback!
single