Kursinhalt
Ultimative Visualisierung mit Python
Ultimative Visualisierung mit Python
Unterdiagramme
Bis jetzt haben wir nur mehrere Plots auf einem einzigen Axes
-Objekt erstellt, indem wir die Plot-Funktionen mehrfach aufgerufen haben (wir können verschiedene Plot-Typen kombinieren).
Jetzt ist es an der Zeit zu lernen, wie man mehrere Axes
-Objekte erstellt und somit mehrere Plots auf verschiedenen Axes
-Objekten.
pyplot
hat eine subplots()
-Funktion genau für diesen Zweck. Wir haben diese Funktion bereits verwendet, als wir im ersten Abschnitt eine Leinwand erstellt haben, jetzt werden wir sie genauer betrachten.
Zeilen und Spalten
Die zwei wichtigsten Argumente dieser Funktion sind nrows
und ncolumns
, die die Anzahl der Zeilen und Spalten des Subplot-Rasters angeben (ihre Standardwerte sind 1
und 1
, was zu nur einem Axes
-Objekt führt).
subplots()
gibt ein Figure
-Objekt und entweder ein Axes
-Objekt oder ein Array von Axes
-Objekten zurück.
Schauen wir uns ein Beispiel an:
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Wir haben gerade ein 2x2 Unterplot-Raster erstellt.
Hinweis
Die Funktion
subplots
gibt hier ein Array vonAxes
-Objekten zurück, da es mehr als einen Unterplot gibt. Wenn ein Array vonAxes
zurückgegeben wird, wird die Variable zum Speichern oftaxs
genannt (ax
wird meistens für ein einzelnesAxes
-Objekt verwendet).
axs
ist in unserem Fall ein zweidimensionales Array, weshalb wir sowohl einen Zeilenindex als auch einen Spaltenindex verwenden sollten, um auf ein bestimmtes Axes
-Objekt zuzugreifen.
Lassen Sie uns ein paar Plots erstellen:
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 des Unterplot-Rasters (Zeile 0
) hat zwei Liniendiagramme und die zweite Zeile (Zeile 1
) hat zwei Streudiagramme.
Denken Sie daran, dass wir hier nicht plt.plot()
oder plt.scatter()
verwenden können, da wir jeden Plot auf einem separaten Axes
-Objekt (Unterplot) platzieren möchten.
Umwandlung in ein 1D-Array
Es ist auch 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) # Converting axs to 1D array of 4 elements 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()
Da wir ein 2x2-Array haben, gibt axs.ravel()
ein 1D-Array mit vier Elementen zurück.
Achsen teilen
Zwei weitere wichtige Parameter der subplots()
-Funktion sind sharex
und sharey
, die angeben, ob die Eigenschaften über die x- oder y-Achsen hinweg geteilt werden sollen. Beide haben standardmäßig den Wert False
. Lassen Sie uns einen von ihnen in unserem Beispiel ändern:
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Share x-axis among all the subplots fig, axs = plt.subplots(2, 2, sharex=True) # Converting axs to 1D array of 4 elements 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 dem Wert True
für sharex
wird die x-Achse unter allen Unterdiagrammen geteilt, was hier sinnvoll ist, da wir für alle Unterdiagramme die gleichen x-Achsen-Koordinaten haben.
Darüber hinaus können wir die Parameter sharex
oder sharey
auf row
(jede Unterdiagrammzeile teilt eine entsprechende Achse) oder col
(jede Unterdiagrammspalte teilt eine entsprechende Achse) setzen.
Wie üblich, fühlen Sie sich frei, mehr in der Dokumentation zu erkunden, falls Sie möchten.
Swipe to start coding
- Verwenden Sie die richtige Funktion, um ein Subplot-Raster zu erstellen.
- Das Raster sollte 3 Zeilen und 1 Spalte haben (geben Sie die ersten beiden Parameter an).
- Geben Sie das rechteste Schlüsselwortargument an, damit die x-Achse unter allen Subplots geteilt wird.
- Speichern Sie das Ergebnis der Funktion zum Erstellen von Subplots in den Variablen
fig
undaxs
(von links nach rechts). - Platzieren Sie das erste Liniendiagramm für
data_linear
in der ersten Zeile (Zeile0
) des Subplot-Rasters. - Platzieren Sie das zweite Liniendiagramm für
data_squared
in der zweiten Zeile (Zeile1
) des Subplot-Rasters. - Platzieren Sie das dritte Liniendiagramm für
data_exp
in der dritten Zeile (Zeile2
) des Subplot-Rasters.
Lösung
Danke für Ihr Feedback!
Unterdiagramme
Bis jetzt haben wir nur mehrere Plots auf einem einzigen Axes
-Objekt erstellt, indem wir die Plot-Funktionen mehrfach aufgerufen haben (wir können verschiedene Plot-Typen kombinieren).
Jetzt ist es an der Zeit zu lernen, wie man mehrere Axes
-Objekte erstellt und somit mehrere Plots auf verschiedenen Axes
-Objekten.
pyplot
hat eine subplots()
-Funktion genau für diesen Zweck. Wir haben diese Funktion bereits verwendet, als wir im ersten Abschnitt eine Leinwand erstellt haben, jetzt werden wir sie genauer betrachten.
Zeilen und Spalten
Die zwei wichtigsten Argumente dieser Funktion sind nrows
und ncolumns
, die die Anzahl der Zeilen und Spalten des Subplot-Rasters angeben (ihre Standardwerte sind 1
und 1
, was zu nur einem Axes
-Objekt führt).
subplots()
gibt ein Figure
-Objekt und entweder ein Axes
-Objekt oder ein Array von Axes
-Objekten zurück.
Schauen wir uns ein Beispiel an:
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Wir haben gerade ein 2x2 Unterplot-Raster erstellt.
Hinweis
Die Funktion
subplots
gibt hier ein Array vonAxes
-Objekten zurück, da es mehr als einen Unterplot gibt. Wenn ein Array vonAxes
zurückgegeben wird, wird die Variable zum Speichern oftaxs
genannt (ax
wird meistens für ein einzelnesAxes
-Objekt verwendet).
axs
ist in unserem Fall ein zweidimensionales Array, weshalb wir sowohl einen Zeilenindex als auch einen Spaltenindex verwenden sollten, um auf ein bestimmtes Axes
-Objekt zuzugreifen.
Lassen Sie uns ein paar Plots erstellen:
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 des Unterplot-Rasters (Zeile 0
) hat zwei Liniendiagramme und die zweite Zeile (Zeile 1
) hat zwei Streudiagramme.
Denken Sie daran, dass wir hier nicht plt.plot()
oder plt.scatter()
verwenden können, da wir jeden Plot auf einem separaten Axes
-Objekt (Unterplot) platzieren möchten.
Umwandlung in ein 1D-Array
Es ist auch 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) # Converting axs to 1D array of 4 elements 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()
Da wir ein 2x2-Array haben, gibt axs.ravel()
ein 1D-Array mit vier Elementen zurück.
Achsen teilen
Zwei weitere wichtige Parameter der subplots()
-Funktion sind sharex
und sharey
, die angeben, ob die Eigenschaften über die x- oder y-Achsen hinweg geteilt werden sollen. Beide haben standardmäßig den Wert False
. Lassen Sie uns einen von ihnen in unserem Beispiel ändern:
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Share x-axis among all the subplots fig, axs = plt.subplots(2, 2, sharex=True) # Converting axs to 1D array of 4 elements 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 dem Wert True
für sharex
wird die x-Achse unter allen Unterdiagrammen geteilt, was hier sinnvoll ist, da wir für alle Unterdiagramme die gleichen x-Achsen-Koordinaten haben.
Darüber hinaus können wir die Parameter sharex
oder sharey
auf row
(jede Unterdiagrammzeile teilt eine entsprechende Achse) oder col
(jede Unterdiagrammspalte teilt eine entsprechende Achse) setzen.
Wie üblich, fühlen Sie sich frei, mehr in der Dokumentation zu erkunden, falls Sie möchten.
Swipe to start coding
- Verwenden Sie die richtige Funktion, um ein Subplot-Raster zu erstellen.
- Das Raster sollte 3 Zeilen und 1 Spalte haben (geben Sie die ersten beiden Parameter an).
- Geben Sie das rechteste Schlüsselwortargument an, damit die x-Achse unter allen Subplots geteilt wird.
- Speichern Sie das Ergebnis der Funktion zum Erstellen von Subplots in den Variablen
fig
undaxs
(von links nach rechts). - Platzieren Sie das erste Liniendiagramm für
data_linear
in der ersten Zeile (Zeile0
) des Subplot-Rasters. - Platzieren Sie das zweite Liniendiagramm für
data_squared
in der zweiten Zeile (Zeile1
) des Subplot-Rasters. - Platzieren Sie das dritte Liniendiagramm für
data_exp
in der dritten Zeile (Zeile2
) des Subplot-Rasters.
Lösung
Danke für Ihr Feedback!