W3docs

Introduction à Matplotlib

Découvrez Matplotlib, son fonctionnement et comment créer vos premiers graphiques en Python avec des exemples clairs sur les courbes et sous-graphiques.

Matplotlib est la bibliothèque de visualisation de données la plus utilisée en Python. Ce chapitre explique ce qu'est Matplotlib, comment fonctionne son architecture principale et comment produire vos premiers graphiques — d'un simple graphique en courbes à une figure étiquetée à plusieurs panneaux. Les chapitres suivants de cette section approfondissent chaque type de graphique.

Qu'est-ce que Matplotlib ?

Matplotlib est une bibliothèque Python open source permettant de créer des visualisations statiques, animées et interactives. John D. Hunter a publié la première version en 2003, initialement pour reproduire les commandes de tracé de MATLAB à l'intérieur de Python. Aujourd'hui, elle est à la base de nombreux outils de visualisation de plus haut niveau (Seaborn, Pandas .plot(), SciPy) et constitue le standard de facto pour les figures de qualité publication en sciences et en ingénierie.

Pourquoi utiliser Matplotlib ?

  • Large gamme de types de graphiques — courbes, nuages de points, barres, histogrammes, camemberts, boîtes à moustaches, violons, cartes de chaleur, contours, surfaces 3D, et bien plus.
  • Contrôle précis — chaque élément d'une figure (axes, graduations, polices, couleurs, légendes) est accessible et configurable.
  • Plusieurs formats de sortie — PNG, PDF, SVG, EPS et HTML interactif (via le backend widget).
  • Intégration dans l'écosystème — fonctionne directement avec les tableaux NumPy, les DataFrames Pandas et SciPy.
  • Gratuit et open source — licence BSD, communauté active, documentation exhaustive.

Quand choisir Matplotlib ?

Utilisez Matplotlib lorsque vous avez besoin d'un contrôle précis et prêt pour la publication sur chaque élément visuel, ou lorsque vous travaillez sur un système nécessitant une bibliothèque stable et bien supportée. Pour des graphiques exploratoires rapides sur des DataFrames, la méthode .plot() intégrée de Pandas (qui appelle Matplotlib en dessous) est souvent plus rapide à écrire. Pour des graphiques statistiques avec une API de plus haut niveau, Seaborn est un complément populaire qui vous permet toujours de revenir à Matplotlib pour les ajustements fins.

Structure de Matplotlib

Comprendre l'architecture à deux couches de Matplotlib évite beaucoup de confusion par la suite.

Les objets Figure et Axes

Chaque visualisation Matplotlib vit à l'intérieur d'une Figure. Une Figure est le conteneur de niveau supérieur — pensez-y comme à une toile. À l'intérieur d'une Figure, vous placez un ou plusieurs objets Axes. Un Axes est la zone de tracé réelle qui contient l'axe des x, l'axe des y, les graduations, les lignes de grille et les données.

Figure
└── Axes (one or more)
    ├── x-axis (XAxis)
    ├── y-axis (YAxis)
    ├── Title
    ├── Lines / Patches / Collections (the plotted data)
    └── Legend

Style pyplot vs. style orienté objet

Matplotlib expose deux interfaces :

Style pyplot — un ensemble de fonctions dans matplotlib.pyplot qui gèrent automatiquement la Figure et les Axes courants. Cela reproduit le flux de travail de MATLAB et est pratique pour des scripts rapides et ponctuels.

Style orienté objet (OO) — vous créez explicitement des objets Figure et Axes et appelez des méthodes sur eux. C'est le style privilégié dans le code de production, les fonctions, et tout script qui crée plus d'une figure, car il indique clairement quelle commande cible quels axes.

Les deux styles produisent une sortie identique. Les exemples de ce chapitre utilisent le style OO et indiquent où le raccourci pyplot diffère.

Installer Matplotlib

Matplotlib ne fait pas partie de la bibliothèque standard de Python. Installez-le avec pip :

pip install matplotlib

Si vous utilisez Anaconda ou Miniconda, Matplotlib est inclus par défaut. Pour l'installer explicitement :

conda install matplotlib

Vérifiez l'installation :

python -c "import matplotlib; print(matplotlib.__version__)"

Importer Matplotlib

La convention d'importation standard dans toute la communauté Python est :

Import standard de Matplotlib

import matplotlib.pyplot as plt

L'alias plt est universel — chaque tutoriel, manuel et réponse Stack Overflow l'utilise, alors conservez-le.

Si vous avez également besoin de NumPy (courant pour générer des données) :

Importer Matplotlib et NumPy ensemble

import numpy as np
import matplotlib.pyplot as plt

Votre premier graphique

Le script Matplotlib le plus simple possible : deux listes de nombres, un appel à plot(), un appel à show().

Graphique en courbes minimal

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

fig, ax = plt.subplots()   # create Figure and Axes
ax.plot(x, y)              # draw a line through the points
plt.show()                 # open the display window (scripts only)

plt.subplots() renvoie un tuple (fig, ax). La plupart du code dans cette section utilise ce motif car il indique explicitement sur quels Axes vous dessinez.

Dans les notebooks Jupyter, plt.show() est optionnel — les graphiques s'affichent automatiquement en ligne lorsqu'une cellule termine son exécution.

Dans les scripts autonomes, plt.show() ouvre une fenêtre et met en pause l'exécution jusqu'à ce que la fenêtre soit fermée. Sans cela, le script se termine avant que la fenêtre n'apparaisse.

Ajouter des étiquettes et un titre

Les étiquettes d'axe et un titre transforment un graphique brut en une figure lisible.

Graphique en courbes avec étiquettes et titre

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_ylabel('x squared')
ax.set_title('Square Numbers')
plt.show()
MéthodeCe qu'elle définit
ax.set_xlabel('text')Étiquette sur l'axe horizontal
ax.set_ylabel('text')Étiquette sur l'axe vertical
ax.set_title('text')Titre au-dessus du graphique

Consultez le chapitre Matplotlib Labels pour les options de taille de police, de graisse et de placement.

Personnaliser le style et la couleur des courbes

ax.plot() accepte des arguments nommés qui contrôlent l'apparence visuelle de la courbe.

Courbe rouge en tirets

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

fig, ax = plt.subplots()
ax.plot(x, y, color='red', linestyle='--', linewidth=2)
ax.set_title('Dashed Red Line')
plt.show()

Valeurs courantes de linestyle : '-' (continu, par défaut), '--' (tirets), ':' (pointillés), '-.' (tiret-point).

Couleurs nommées courantes : 'blue', 'red', 'green', 'orange', 'purple', 'black'. Les codes hexadécimaux comme '#1f77b4' fonctionnent également.

Consultez Matplotlib Line et Matplotlib Markers pour une liste complète des options de style.

Tracer plusieurs courbes et ajouter une légende

Appelez ax.plot() plusieurs fois pour superposer plusieurs courbes sur les mêmes Axes. Passez label= à chaque appel, puis appelez ax.legend() pour afficher la boîte de légende.

Deux courbes superposées avec une légende

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 100)

fig, ax = plt.subplots()
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)', linestyle='--')
ax.set_xlabel('Angle (radians)')
ax.set_ylabel('Value')
ax.set_title('Sine and Cosine')
ax.legend()
plt.show()

np.linspace(0, 2 * np.pi, 100) crée 100 nombres régulièrement espacés de 0 à 2π — une façon pratique de produire des courbes lisses.

Créer des sous-graphiques

plt.subplots(rows, cols) crée une grille d'Axes à l'intérieur d'une seule Figure. Vous accédez à chaque Axes par son index.

Grille 2×2 de différents types de graphiques

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

fig, axs = plt.subplots(2, 2, figsize=(8, 6))

axs[0, 0].plot(x, y)
axs[0, 0].set_title('Line')

axs[0, 1].scatter(x[::5], y[::5])  # every 5th point
axs[0, 1].set_title('Scatter')

axs[1, 0].bar(['A', 'B', 'C'], [3, 7, 5])
axs[1, 0].set_title('Bar')

axs[1, 1].hist(np.random.randn(500), bins=20)
axs[1, 1].set_title('Histogram')

fig.tight_layout()   # prevent overlapping labels
plt.show()

fig.tight_layout() ajuste automatiquement l'espacement entre les sous-graphiques afin que les titres et les étiquettes ne se chevauchent pas. C'est presque toujours une bonne idée de l'appeler lors de l'utilisation de sous-graphiques.

Consultez Matplotlib Subplot pour en savoir plus sur les dispositions en grille, les axes partagés et GridSpec.

Enregistrer des figures

Pour enregistrer une figure dans un fichier plutôt que de l'afficher de manière interactive, appelez fig.savefig() avant plt.show().

Enregistrer une figure en PNG et PDF

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
ax.set_title('Saved Figure')

fig.savefig('my_plot.png', dpi=150)   # raster: PNG at 150 DPI
fig.savefig('my_plot.pdf')            # vector: PDF (no DPI needed)
plt.show()

L'argument dpi (points par pouce) contrôle la résolution pour les formats raster. dpi=150 est un bon équilibre entre taille de fichier et qualité d'impression ; dpi=300 est la norme pour les figures de journaux scientifiques.

Les formats pris en charge incluent PNG, PDF, SVG, EPS et TIFF. Matplotlib détecte automatiquement le format à partir de l'extension du fichier.

Et ensuite ?

Ce chapitre a présenté les concepts fondamentaux de Matplotlib. Le reste de la section Python Matplotlib couvre chaque sujet en profondeur :

Was this page helpful?