La réponse de las3rjock , qui est en quelque sorte la réponse acceptée par l'OP, est incorrecte - le code ne s'exécute pas, ni la syntaxe matplotlib valide; cette réponse ne fournit aucun code exécutable et ne dispose d'aucune information ou suggestion que l'OP pourrait trouver utile pour écrire son propre code pour résoudre le problème dans l'OP.
Étant donné que c'est la réponse acceptée et qu'elle a déjà reçu plusieurs votes positifs, je suppose qu'une petite déconstruction s'impose.
Tout d' abord, appeler intrigue secondaire ne pas vous donner plusieurs parcelles; subplot est appelé pour créer un seul tracé, ainsi que pour créer plusieurs tracés. De plus, "changer plt.figure (i)" n'est pas correct.
plt.figure () (dans lequel plt ou PLT est généralement la bibliothèque pyplot de matplotlib importée et rebondie comme une variable globale, plt ou parfois PLT, comme ceci:
from matplotlib import pyplot as PLT
fig = PLT.figure()
la ligne juste au-dessus crée une instance de figure matplotlib; La méthode add_subplot de cet objet est alors appelée pour chaque fenêtre de traçage (pensez de manière informelle à un axe x & y comprenant un seul sous-tracé). Vous créez (que ce soit juste un ou plusieurs sur une page), comme ça
fig.add_subplot(111)
cette syntaxe équivaut à
fig.add_subplot(1,1,1)
choisissez celui qui vous convient.
Ci-dessous, j'ai répertorié le code pour tracer deux graphiques sur une page, l'un au-dessus de l'autre. Le formatage se fait via l'argument passé à add_subplot . Notez que l'argument est ( 211 ) pour le premier graphique et ( 212 ) pour le second.
from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(211)
ax1.plot([(1, 2), (3, 4)], [(4, 3), (2, 3)])
ax2 = fig.add_subplot(212)
ax2.plot([(7, 2), (5, 3)], [(1, 6), (9, 5)])
PLT.show()
Chacun de ces deux arguments est une spécification complète pour placer correctement les fenêtres de tracé respectives sur la page.
211 (qui encore une fois, pourrait également être écrit sous forme de 3 tuples comme (2,1,1) signifie deux lignes et une colonne de fenêtres de tracé; le troisième chiffre spécifie l'ordre de cette fenêtre de sous-tracé particulier par rapport aux autres fenêtres de sous-tracé- -dans ce cas, c'est le premier tracé (qui le place sur la ligne 1) d'où le tracé numéro 1, ligne 1 col 1.
L'argument passé au deuxième appel à add_subplot , ne diffère du premier que par le chiffre de fin (un 2 au lieu d'un 1, car ce tracé est le deuxième tracé (ligne 2, col 1).
Un exemple avec plus de tracés: si à la place vous vouliez quatre tracés sur une page, dans une configuration matricielle 2x2, vous appelleriez quatre fois la méthode add_subplot, en passant ces quatre arguments (221), (222), (223) et ( 224), pour créer quatre tracés sur une page à 10, 2, 8 et 4 heures, respectivement et dans cet ordre.
Notez que chacun des quatre arguments contient deux lignes de tête 2 - qui encode la configuration 2 x 2, c'est-à-dire deux lignes et deux colonnes.
Le troisième chiffre (le plus à droite) dans chacun des quatre arguments encode l'ordre de cette fenêtre de tracé particulière dans la matrice 2 x 2 - c'est-à-dire, ligne 1 col 1 (1), ligne 1 col 2 (2), ligne 2 col 1 (3), ligne 2 col 2 (4).
fig.add_axes(rect)
place deadd_subplot
?PLT
? Jamais vu cela utilisé auparavantfor i in range(16): plt.subplot(4, 4, i+1)
et n'observer aucune erreur de syntaxe. La réponse est acceptée car elle a probablement fait ce que le PO voulait.Puisque cette question remonte à 4 ans, de nouvelles choses ont été implémentées et parmi elles, il y a une nouvelle fonction
plt.subplots
qui est très pratique :où
axes
est unnumpy.ndarray
des objets AxesSubplot, ce qui rend très pratique de parcourir les différents sous-graphiques en utilisant simplement des indices de tableau[i,j]
.la source
Cela fonctionne aussi:
Il trace 19 graphiques au total sur une page. Le format est 5 en bas et 4 en travers.
la source
La réponse de @doug & FS est de très bonnes solutions. Je souhaite partager la solution pour l'itération sur pandas.dataframe.
la source
for i,col in enumerate(df.columns):