Plusieurs graphiques sur une même page

ExempleCommande 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.

1
import numpy as np
2
from matplotlib import pyplot as plt
3
x = np.arange(-np.pi, np.pi, 0.1)
4
y = []
5
y.append(np.sin(x))
6
y.append(np.sin(2 * x))
7
y.append(np.sin(3 * x))
8
y.append(np.cos(x))
9
y.append(np.cos(2 * x))
10
y.append(np.cos(3 * x))
11
titre_courbe = ['sin(x)', 'sin(2x)', 'sin(3x)',
12
                'cos(x)', 'cos(2x)', 'cos(3x)']
13
14

L'appel à plt.subplots(nrows=1, ncols=2) donne comme résultat fig et axfig 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].

1
# préparation de la fenêtre graphique
2
# contenant 6 système d'axe ( deux lignes par tois colonnes)
3
fig, ax = plt.subplots(nrows=2, ncols=3)
4
ind_courbe = 0
5

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]

1
for lig in range(2):
2
    for col in range(3):
3
        ax[lig, col].plot(x, y[ind_courbe])
4
        ax[lig, col].set_xlabel('temps(s)')
5
        ax[lig, col].set_ylabel('tension(V)')
6
        titre = 'Ligne ' + str(lig + 1) + ", colonne " + str(col + 1)
7
        titre = titre + " Index " + str(lig) + ", " + str(col)
8
        ax[lig][col].set_title(titre)
9
        ax[lig][col].grid(True)
10
        ax[lig][col].legend([titre_courbe[ind_courbe]])
11
        ind_courbe = ind_courbe + 1
12
plt.show()
13
14

Le résultat du programme précédent.