Parfois, je rencontre un code tel que celui-ci:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
fig = plt.figure()
fig.add_subplot(111)
plt.scatter(x, y)
plt.show()
Qui produit:
Je lis la documentation comme un fou, mais je ne trouve pas d'explication pour le 111
. Parfois, je vois un 212
.
Que signifie l'argument de fig.add_subplot()
?
Ce sont des paramètres de grille de sous-parcelle codés sous la forme d'un entier unique. Par exemple, "111" signifie "grille 1x1, première sous-parcelle" et "234" signifie "grille 2x3, 4ème sous-parcelle".
La forme alternative pour add_subplot(111)
est add_subplot(1, 1, 1)
.
Je pense que cela serait mieux expliqué par la photo suivante:
Pour initialiser ce qui précède, on pourrait taper:
import matplotlib.pyplot as plt
fig = plt.figure()
fig.add_subplot(221) #top left
fig.add_subplot(222) #top right
fig.add_subplot(223) #bottom left
fig.add_subplot(224) #bottom right
plt.show()
La réponse de Constantin est parfaite, mais pour plus de détails, ce comportement est hérité de Matlab.
Le comportement de Matlab est expliqué dans la section Configuration de la figure - Affichage de plusieurs tracés par figure de la documentation Matlab.
la sous-parcelle (m, n, i) divise la fenêtre de la figure en une matrice m-par-n de petite taille sous-parcelles et sélectionne la sous-parcelle pour la parcelle actuelle. Les parcelles sont numérotés le long de la rangée supérieure de la fenêtre, puis le deuxième rangée, et ainsi de suite.
import matplotlib.pyplot as plt
plt.figure(figsize=(8,8))
plt.subplot(3,2,1)
plt.subplot(3,2,3)
plt.subplot(3,2,5)
plt.subplot(2,2,2)
plt.subplot(2,2,4)
Le premier code crée la première sous-parcelle dans une mise en page comportant 3 lignes et 2 colonnes.
Les trois graphiques de la première colonne indiquent les 3 lignes. La seconde parcelle se situe juste en dessous de la première parcelle dans la même colonne et ainsi de suite.
Les deux derniers graphiques ont des arguments (2, 2)
indiquant que la deuxième colonne n'a que deux lignes, les paramètres de position se déplacent ligne par ligne.