Exercice 75 / 100

Matplotlib — Subplots

Crée plusieurs graphiques dans une seule figure

Les subplots permettent de placer plusieurs graphiques dans une seule figure. Indispensable pour comparer plusieurs vues d'un même dataset.

Syntaxe principale : plt.subplots

fig, axes = plt.subplots(nrows, ncols, figsize=(L, H))
fig → la figure (le "papier") axes → une matrice d'axes (les "cases")

Accès à un axe

axes[i, j]
si nrows > 1 et ncols > 1
axes[i]
si nrows == 1 ou ncols == 1 (1D)
axes
si nrows = ncols = 1
plt.subplots rend deux choses : la figure, qui est le papier, et la grille de cases où l'on dessine, chacune atteinte par sa ligne et sa colonne, axes[0, 1] étant la case du haut à droite

Dessiner dans chaque case

Chaque ax a les mêmes méthodes que plt, mais préfixées :

ax.plot(x, y) ax.scatter(x, y) ax.bar(cats, vals) ax.hist(data, bins=20) ax.set_title('Titre') ax.set_xlabel('x') / ax.set_ylabel('y') ax.legend()

Exemple : 4 graphiques 2×2

import numpy as np import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
axes[0, 0].plot(x, np.sin(x), color='#E8006F') axes[0, 0].set_title('Sinus')
axes[0, 1].plot(x, np.cos(x), color='#00C878') axes[0, 1].set_title('Cosinus')
axes[1, 0].plot(x, np.exp(-x/3), color='#F0A500') axes[1, 0].set_title('Exponentielle')
axes[1, 1].plot(x, np.log(x + 1), color='#9B6DFF') axes[1, 1].set_title('Logarithme')
plt.tight_layout() plt.savefig('/tmp/subplots.png')

plt.tight_layout()

Ajuste automatiquement les espacements pour éviter le chevauchement des titres et labels. À appeler après tous les set_title / set_xlabel.

Partager les axes

fig, axes = plt.subplots(2, 1, sharex=True) # x commun fig, axes = plt.subplots(1, 3, sharey=True) # y commun

Utile quand on compare des séries sur la même échelle.

Pour une seule ligne ou colonne de plots, axes est une liste 1D : axes[0], axes[1]... pas axes[0, 0].

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →