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)
└── LegendStyle 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 matplotlibSi vous utilisez Anaconda ou Miniconda, Matplotlib est inclus par défaut. Pour l'installer explicitement :
conda install matplotlibVé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 pltL'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 pltVotre 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éthode | Ce 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 :
- Matplotlib Get Started — installation et premiers pas en détail
- Matplotlib Pyplot — l'interface pyplot expliquée
- Matplotlib Plotting — les fondamentaux du tracé
- Matplotlib Line — graphiques en courbes et mise en forme
- Matplotlib Markers — marqueurs de points de données
- Matplotlib Labels — étiquettes d'axes, titres et annotations
- Matplotlib Grid — ajouter et styliser les lignes de grille
- Matplotlib Subplot — figures à plusieurs panneaux
- Matplotlib Scatter — nuages de points
- Matplotlib Bars — graphiques en barres
- Matplotlib Histograms — graphiques de distribution
- Matplotlib Pie Charts — graphiques en camembert et en anneau