Contenu du cours
Visualisation Ultime Avec Python
Visualisation Ultime Avec Python
Sous-Graphiques
Jusqu'à présent, nous avons seulement créé plusieurs graphiques sur un seul objet Axes
en utilisant plusieurs appels des fonctions de traçage (nous pouvons combiner différents types de graphiques).
Il est maintenant temps d'apprendre à créer plusieurs objets Axes
et donc plusieurs graphiques sur différents objets Axes
.
pyplot
a une fonction subplots()
exactement pour cet objectif. Nous avons déjà utilisé cette fonction lorsque nous avons créé une toile dans la première section, maintenant nous allons l'examiner plus en détail.
Lignes et Colonnes
Les deux arguments les plus importants de cette fonction sont nrows
et ncolumns
qui spécifient respectivement le nombre de lignes et de colonnes de la grille de sous-graphiques (leurs valeurs par défaut sont 1
et 1
résultant en un seul objet Axes
).
subplots()
renvoie un objet Figure
et soit un objet Axes
soit un tableau d'objets Axes
.
Regardons un exemple :
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Nous venons de créer une grille de sous-graphiques de 2 par 2.
Remarque
La fonction
subplots
ici renvoie un tableau d'objetsAxes
, car il y a plus d'un sous-graphe. Lorsqu'un tableau d'Axes
est renvoyé, la variable pour le stocker est souvent appeléeaxs
(ax
est principalement utilisé pour un seul objetAxes
).
axs
dans notre cas est un tableau bidimensionnel, c'est pourquoi nous devons utiliser à la fois un indice de ligne et un indice de colonne pour accéder à un objet Axes
particulier.
Créons quelques graphiques :
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 de la grille de sous-graphiques (ligne 0
) a deux graphiques en ligne et la deuxième ligne (ligne 1
) a deux graphiques de dispersion.
Rappelez-vous que nous ne pouvons pas utiliser plt.plot()
ou plt.scatter()
ici, car nous voulons placer chaque graphique sur un objet Axes
séparé (sous-graphe).
Conversion en tableau 1D
Il est également possible d'utiliser la méthode .ravel()
pour convertir un tableau Axes
2D 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) # 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()
Puisque nous avons un tableau 2x2, axs.ravel()
renvoie un tableau 1D avec quatre éléments.
Partager un Axe
Deux autres paramètres importants de la fonction subplots()
sont sharex
et sharey
qui spécifient si les propriétés doivent être partagées respectivement sur les axes x ou y. Ils ont tous deux une valeur par défaut de False
. Changeons l'un d'eux dans notre exemple :
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()
Avec la valeur True
pour sharex
, l'axe x sera partagé entre tous les sous-graphiques, ce qui est logique ici, puisque nous avons les mêmes coordonnées de l'axe x pour tous les sous-graphiques.
De plus, nous pouvons définir les paramètres sharex
ou sharey
sur row
(chaque ligne de sous-graphiques partagera un axe respectif) ou col
(chaque colonne de sous-graphiques partagera un axe respectif).
Comme d'habitude, n'hésitez pas à explorer davantage dans la documentation si vous le souhaitez.
Swipe to start coding
- Utilisez la fonction correcte pour créer une grille de sous-graphiques.
- La grille doit avoir 3 lignes et 1 colonne (spécifiez les deux premiers paramètres).
- Spécifiez l'argument de mot-clé le plus à droite, afin que l'axe des x soit partagé entre tous les sous-graphiques.
- Stockez le résultat de la fonction pour créer des sous-graphiques dans les variables
fig
etaxs
(de gauche à droite). - Placez le premier graphique en ligne pour
data_linear
sur la première ligne (ligne0
) de la grille de sous-graphiques. - Placez le deuxième graphique en ligne pour
data_squared
sur la deuxième ligne (ligne1
) de la grille de sous-graphiques. - Placez le troisième graphique en ligne pour
data_exp
sur la troisième ligne (ligne2
) de la grille de sous-graphiques.
Solution
Merci pour vos commentaires !
Sous-Graphiques
Jusqu'à présent, nous avons seulement créé plusieurs graphiques sur un seul objet Axes
en utilisant plusieurs appels des fonctions de traçage (nous pouvons combiner différents types de graphiques).
Il est maintenant temps d'apprendre à créer plusieurs objets Axes
et donc plusieurs graphiques sur différents objets Axes
.
pyplot
a une fonction subplots()
exactement pour cet objectif. Nous avons déjà utilisé cette fonction lorsque nous avons créé une toile dans la première section, maintenant nous allons l'examiner plus en détail.
Lignes et Colonnes
Les deux arguments les plus importants de cette fonction sont nrows
et ncolumns
qui spécifient respectivement le nombre de lignes et de colonnes de la grille de sous-graphiques (leurs valeurs par défaut sont 1
et 1
résultant en un seul objet Axes
).
subplots()
renvoie un objet Figure
et soit un objet Axes
soit un tableau d'objets Axes
.
Regardons un exemple :
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
Nous venons de créer une grille de sous-graphiques de 2 par 2.
Remarque
La fonction
subplots
ici renvoie un tableau d'objetsAxes
, car il y a plus d'un sous-graphe. Lorsqu'un tableau d'Axes
est renvoyé, la variable pour le stocker est souvent appeléeaxs
(ax
est principalement utilisé pour un seul objetAxes
).
axs
dans notre cas est un tableau bidimensionnel, c'est pourquoi nous devons utiliser à la fois un indice de ligne et un indice de colonne pour accéder à un objet Axes
particulier.
Créons quelques graphiques :
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 de la grille de sous-graphiques (ligne 0
) a deux graphiques en ligne et la deuxième ligne (ligne 1
) a deux graphiques de dispersion.
Rappelez-vous que nous ne pouvons pas utiliser plt.plot()
ou plt.scatter()
ici, car nous voulons placer chaque graphique sur un objet Axes
séparé (sous-graphe).
Conversion en tableau 1D
Il est également possible d'utiliser la méthode .ravel()
pour convertir un tableau Axes
2D 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) # 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()
Puisque nous avons un tableau 2x2, axs.ravel()
renvoie un tableau 1D avec quatre éléments.
Partager un Axe
Deux autres paramètres importants de la fonction subplots()
sont sharex
et sharey
qui spécifient si les propriétés doivent être partagées respectivement sur les axes x ou y. Ils ont tous deux une valeur par défaut de False
. Changeons l'un d'eux dans notre exemple :
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()
Avec la valeur True
pour sharex
, l'axe x sera partagé entre tous les sous-graphiques, ce qui est logique ici, puisque nous avons les mêmes coordonnées de l'axe x pour tous les sous-graphiques.
De plus, nous pouvons définir les paramètres sharex
ou sharey
sur row
(chaque ligne de sous-graphiques partagera un axe respectif) ou col
(chaque colonne de sous-graphiques partagera un axe respectif).
Comme d'habitude, n'hésitez pas à explorer davantage dans la documentation si vous le souhaitez.
Swipe to start coding
- Utilisez la fonction correcte pour créer une grille de sous-graphiques.
- La grille doit avoir 3 lignes et 1 colonne (spécifiez les deux premiers paramètres).
- Spécifiez l'argument de mot-clé le plus à droite, afin que l'axe des x soit partagé entre tous les sous-graphiques.
- Stockez le résultat de la fonction pour créer des sous-graphiques dans les variables
fig
etaxs
(de gauche à droite). - Placez le premier graphique en ligne pour
data_linear
sur la première ligne (ligne0
) de la grille de sous-graphiques. - Placez le deuxième graphique en ligne pour
data_squared
sur la deuxième ligne (ligne1
) de la grille de sous-graphiques. - Placez le troisième graphique en ligne pour
data_exp
sur la troisième ligne (ligne2
) de la grille de sous-graphiques.
Solution
Merci pour vos commentaires !