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 titre

  • Axes est un objet qui représente un dessin avec ses axes (ax.xaxis et ax.yaxis), sa grille ax.grid et les différents tracés (courbes, nuages de points, histogrammes, etc.)

img

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')
../_images/3a362f9f46c4660b76436bdf098d5639bd3fadf669378a2beac356eee50ceec2.png
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()
../_images/622f949e699114941ec2248691d6f4fd9a7caa6306e506855e5b4851deba727e.png
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()
../_images/7c22147574592eb7461bdbe3c3f25948f2293a1e4f0c0f4c67e2fc1716ad75c5.png

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()
../_images/d6e3f2a4181cc4a484297981b9d2213d24768fae87aaceaa7f7dfc8ab3ab62b3.png

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');
../_images/665e891c647fd07c455ee0ca9029e1033e53e598e7abb02d5825b632b7bcbf1b.png

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’un Axes) lorsque les variables aléatoires sont continues

  • un diagramme en bâtons (méthode bar d’un Axes) pour des variables aléatoires discrètes.