3. Module matplotlib
#
C’est le module de tracé qu’il faut connaitre. D’autres modules comme seaborn
sont plus adaptés aux statistiques mais reposent sur matplotlib
.
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
3.1. Figure et axes#
On recommande d’utiliser plt.subplots
pour initialiser un objet Figure
et des objets Axes
.
Figure
est l’objet global qui contient une liste d’Axes
et le titreAxes
est un objet qui représente un dessin avec ses axes (ax.xaxis
etax.yaxis
), sa grilleax.grid
et les différents tracés (courbes, nuages de points, histogrammes, etc.)
x = np.linspace(0, 2*np.pi, 200)
y = np.sin(x**2)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Première Figure avec un seul Axes')
Text(0.5, 1.0, 'Première Figure avec un seul Axes')

fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2,
figsize=(8, 4), sharey=True)
ax1.plot(x, y)
ax1.set_title('Style ligne')
ax2.scatter(x, 2*y)
ax2.set_title("Dilatation d'un facteur 2 et style point")
fig.suptitle(r'Deux tracés `Axes` qui partagent le même axe $y$')
fig.tight_layout() # pour avoir un aspect plus resserré (moins de marges)
plt.show()

fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(8,4),
sharex=True, layout="tight")
ax1.plot(x, y, color="C0")
ax2.scatter(x, 2*y, marker='x', color="C1")
plt.show()

Les noms ax1
et ax2
obtenus comme retour de la fonction plt.subplots
sont des raccourcis vers la liste des Axes
de l’objet fig
.
Ainsi on a:
(ax1 is fig.axes[0], ax2 is fig.axes[1])
(True, True)
Si on utilise le tuple unpacking pour nommer directement ax1
et ax2
, on récupère tous les Axes
créés. Dans l’exemple qui suit on a 2 lignes et 2 colonnes donc 4 Axes
créés: plus exactement une liste de 2 listes de 2 Axes
.
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8,6))
for i, ax in enumerate(axs.flat): # important ici le flat pour applatir axs
ax.plot(x, y, c=f"C{i}", label=f"C{i}")
ax.legend()
fig.legend(loc="center right")
fig.suptitle("Illustration des 4 premières couleurs de la palette")
plt.show()

3.2. Nuage de points#
C’est un scatter-plot obtenu par la méthode scatter
d’un Axes
. Exemple d’utilisation:
from numpy.random import default_rng
rng = default_rng()
data = {'a': np.arange(50),
'c': rng.integers(0, 50, size=50),
'd': rng.standard_normal(size=50)}
data['b'] = data['a'] + 10 * rng.standard_normal(50)
data['d'] = np.abs(data['d']) * 100
fig, ax = plt.subplots(figsize=(8, 6))
ax.scatter(x='a', y='b', c='c', s='d', data=data)
ax.set_xlabel('Entry a')
ax.set_ylabel('Entry b');

3.3. Courbes#
C’est la fonction plot
: lire la page de documentation !
3.4. Distribution empirique#
Pour visualiser la distribution empirique associée à des réalisations de variables aléatoires i.i.d on utilisera
un histogramme ( méthode
hist
d’unAxes
) lorsque les variables aléatoires sont continuesun diagramme en bâtons (méthode
bar
d’unAxes
) pour des variables aléatoires discrètes.