Plusieurs graphiques sur une même page
Exemple : Commande subplot Suite
Ici on va tracer 6 courbes dans la même fenêtre en utilisant la commande plt.subplots. La commande fig, ax =plt.subplots(nrows, ncols)
permet de diviser la page en nrows
lignes et nrows
colonnes de surface identique et de tracer la courbe dans l'élément p. Les éléments sont numérotés de la gauche vers la droite et du haut vers le bas.
Le programme suivant illustre l'usage de plt.subplots.
Après avoir importé les librairies, on calcule 7 tableaux numpy, le premier nommé x contient les valeurs comprises entre \(-\pi\) et \(+\pi\) par pas de 0., Une liste est ensuite construite en ajoutant les valeurs de sin(x), sin(2x), sin(3x), cos(x), cos(2x) et cos(3x) contenues dans des tableaux numpy.
La liste nommée y contient ainsi 6 tableaux numpy.
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(-np.pi, np.pi, 0.1)
y = []
y.append(np.sin(x))
y.append(np.sin(2 * x))
y.append(np.sin(3 * x))
y.append(np.cos(x))
y.append(np.cos(2 * x))
y.append(np.cos(3 * x))
titre_courbe = ['sin(x)', 'sin(2x)', 'sin(3x)',
'cos(x)', 'cos(2x)', 'cos(3x)']
L'appel à plt.subplots(nrows=1, ncols=2)
donne comme résultat fig
et ax
où fig
est la fenêtre et ax un tableau de système d'axe (ou repère) graphique.
Dans cet appel, ax est un tableau de 2X3=6 valeurs ax[0][0]
pour le premier repère, ax[0][1]
pour le second repère ax[0][2]
pour le second repère. Ces trois repères sont sur la première ligne.
Les repères sur la seconde ligne sont ax[1][0]
, ax[1][1]
et ax[1][2]
.
# préparation de la fenêtre graphique
# contenant 6 système d'axe ( deux lignes par tois colonnes)
fig, ax = plt.subplots(nrows=2, ncols=3)
ind_courbe = 0
Dans ce qui suit, les courbes sont tracées dans ax[lig][col]
où l'index lig est entre 0 et 2 (non compris) et col est compris entre 0 et 3 (non compris).
Le graphique en ligne 1 et colonne 2 est dans l'élément [0,1] du tableau ax.
ax[lig, col]
peut aussi s'écrire ax[lig][col]
for lig in range(2):
for col in range(3):
ax[lig, col].plot(x, y[ind_courbe])
ax[lig, col].set_xlabel('temps(s)')
ax[lig, col].set_ylabel('tension(V)')
titre = 'Ligne ' + str(lig + 1) + ", colonne " + str(col + 1)
titre = titre + " Index " + str(lig) + ", " + str(col)
ax[lig][col].set_title(titre)
ax[lig][col].grid(True)
ax[lig][col].legend([titre_courbe[ind_courbe]])
ind_courbe = ind_courbe + 1
plt.show()
Le résultat du programme précédent.