Sous-Graphiques
La fonction subplots()
de pyplot
répond précisément à cet objectif. Elle a déjà été utilisée pour créer une zone de dessin dans la première section, et sera maintenant examinée plus en détail.
Lignes et colonnes
Les arguments les plus importants de cette fonction sont nrows
et ncolumns
, qui définissent le nombre de lignes et de colonnes dans la grille de sous-graphiques. Par défaut, les deux valent 1, ce qui donne un seul graphique (Axes
).
La fonction subplots()
retourne un objet Figure
et soit un objet Axes
, soit un tableau d'objets Axes
, selon la taille de la grille.
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Une grille de sous-graphiques de 2 par 2 a été créée.
Puisqu'il y a plusieurs sous-graphiques, subplots
retourne un tableau d'objets Axes
, généralement stocké dans une variable appelée axs
(le singulier ax
est utilisé pour un seul graphique).
Dans ce cas, axs
est un tableau à deux dimensions, il faut donc un indice de ligne et un indice de colonne pour accéder à un sous-graphique spécifique.
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()
La première ligne (ligne 0) contient deux graphiques linéaires, et la seconde ligne (ligne 1) contient deux nuages de points.
Puisque chaque graphique est placé sur un sous-graphe séparé, il n'est pas possible d'utiliser directement plt.plot()
ou plt.scatter()
. L'approche appropriée consiste à appeler la méthode correspondante sur chaque objet Axes
individuel.
Conversion en tableau 1D
Il est également possible d'utiliser la méthode .ravel()
pour convertir un tableau 2D d'objets Axes
en un tableau aplati contigu 1D :
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()
Avec un tableau 2x2, axs.ravel()
le convertit en un tableau 1D contenant quatre éléments.
Partage d'un axe
La fonction subplots()
possède également les paramètres sharex
et sharey
. Ils contrôlent si les axes x ou y sont partagés entre les sous-graphiques. Les deux sont définis sur False
par défaut.
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()
Définir sharex=True
permet de partager l’axe des abscisses entre tous les sous-graphiques, ce qui est utile ici car tous utilisent les mêmes valeurs sur l’axe x.
Il est également possible de définir sharex
ou sharey
à 'row'
pour partager l’axe au sein de chaque ligne de sous-graphiques, ou à 'col'
pour le partager au sein de chaque colonne.
Comme d’habitude, n’hésitez pas à explorer davantage la
subplots()
documentation si vous souhaitez approfondir le sujet.
Swipe to start coding
- Utiliser la fonction appropriée pour créer une grille de sous-graphiques.
- La grille doit comporter 3 lignes et 1 colonne (spécifiez les deux premiers paramètres).
- Indiquer l'argument de mot-clé le plus à droite afin que l'axe des x soit partagé entre tous les sous-graphiques.
- Stocker le résultat de la fonction de création des sous-graphiques dans les variables
fig
etaxs
(de gauche à droite). - Placer le premier graphique linéaire pour
data_linear
sur la première ligne (ligne0
) de la grille de sous-graphiques. - Placer le deuxième graphique linéaire pour
data_squared
sur la deuxième ligne (ligne1
) de la grille de sous-graphiques. - Placer le troisième graphique linéaire pour
data_exp
sur la troisième ligne (ligne2
) de la grille de sous-graphiques.
Solution
Merci pour vos commentaires !