Collecter des informations ne suffit plus : il faut savoir les faire parler. En Python, le langage roi de la Data Science, il existe une multitude d’outils pour créer des graphiques. Mais s’il ne devait en rester qu’un, ce serait Matplotlib.
Créée en 2003, Matplotlib est la bibliothèque fondatrice de la visualisation de données en Python. Elle est extrêmement puissante, flexible et constitue la base sur laquelle reposent de nombreuses autres bibliothèques modernes (comme Seaborn).
Que vous soyez analyste, développeur ou spécialiste du marketing souhaitant analyser ses campagnes, ce guide vous expliquera quand utiliser Matplotlib, comment comprendre sa logique, et vous fournira les blocs de code essentiels pour démarrer.
Quand devez-vous utiliser Matplotlib ?
L’écosystème Python regorge de solutions (Seaborn, Plotly, Bokeh…). Alors, pourquoi choisir Matplotlib aujourd’hui ?
Les points forts de Matplotlib (cas d’usage idéaux)
- Le contrôle total : Matplotlib vous permet de modifier chaque pixel de votre graphique. Si vous devez créer une figure très spécifique pour une publication scientifique ou un rapport financier strict, c’est l’outil parfait.
- La standardisation : C’est la bibliothèque la plus documentée du web. Si vous rencontrez un problème, la solution se trouve forcément sur les forums d’entraide.
- L’intégration : Elle s’intègre parfaitement avec Pandas et NumPy, les bibliothèques d’analyse de données les plus utilisées.
Les limites (quand privilégier un autre outil)
- L’interactivité : Matplotlib génère des images statiques. Si vous souhaitez créer un tableau de bord interactif pour un site web (où l’utilisateur peut survoler des points pour voir des données), tournez-vous plutôt vers Plotly.
- L’esthétique par défaut : Les graphiques de base peuvent paraître un peu austères. Si vous voulez de très beaux graphiques statistiques complexes en deux lignes de code, Seaborn sera plus adapté.
Comprendre la logique : figure et Axes
Avant de coder, il est essentiel de comprendre l’approche orientée objet de Matplotlib. Un graphique n’est pas une simple image, c’est un ensemble de composants :
- La Figure (
fig) : C’est la toile de fond, la fenêtre globale qui contient tout. - Les Axes (
ax) : C’est le graphique en lui-même (la zone de tracé, les courbes, les graduations). Une Figure peut contenir plusieurs Axes (pour faire des sous-graphiques).
La bonne pratique consiste toujours à créer ces deux éléments explicitement.
Cas pratique : créez vos premiers graphiques
Pour commencer, vous devez installer la bibliothèque via votre terminal si ce n’est pas déjà fait : pip install matplotlib.
Voici comment importer l’outil dans votre script Python. Par convention, on l’importe toujours sous l’alias plt.
import matplotlib.pyplot as plt
import numpy as np # Utilisé pour générer des données de test
1. Le graphique en courbe simple (Line Plot)
C’est le graphique de base, idéal pour observer une évolution dans le temps (le trafic d’un site web, l’évolution d’un chiffre d’affaires).
# 1. Préparation des données
annees = [2020, 2021, 2022, 2023, 2024]
chiffre_affaires = [15000, 18000, 17500, 22000, 26000]
# 2. Création de la Figure et des Axes
fig, ax = plt.subplots(figsize=(8, 5)) # figsize définit la taille (largeur, hauteur)
# 3. Tracé de la courbe
ax.plot(annees, chiffre_affaires, color='blue', marker='o', linestyle='-', linewidth=2)
# 4. Personnalisation
ax.set_title("Évolution du Chiffre d'Affaires (2020-2024)")
ax.set_xlabel("Années")
ax.set_ylabel("Revenus en Euros")
# 5. Affichage
plt.show()
2. Le diagramme en barres (Bar Chart)
Très utile pour comparer des catégories entre elles, comme les performances de différents canaux d’acquisition marketing.
# Données
canaux = ['SEO', 'Réseaux Sociaux', 'Emailing', 'Ads']
conversions = [450, 320, 150, 600]
fig, ax = plt.subplots(figsize=(8, 5))
# Tracé du diagramme en barres
bars = ax.bar(canaux, conversions, color=['#4CAF50', '#2196F3', '#FFC107', '#F44336'])
# Personnalisation
ax.set_title("Conversions par canal d'acquisition")
ax.set_ylabel("Nombre de conversions")
# Astuce : Ajouter la valeur exacte au-dessus de chaque barre
for bar in bars:
hauteur = bar.get_height()
ax.annotate(f'{hauteur}',
xy=(bar.get_x() + bar.get_width() / 2, hauteur),
xytext=(0, 3), # Décalage vertical de 3 points
textcoords="offset points",
ha='center', va='bottom')
plt.show()
3. Le nuage de points (Scatter Plot)
Le nuage de points est indispensable pour observer la corrélation entre deux variables (par exemple, le budget publicitaire dépensé et le nombre de ventes générées).
# Génération de données aléatoires pour l'exemple
budget_pub = np.random.randint(100, 1000, 50)
ventes = budget_pub * 1.5 + np.random.randint(-100, 100, 50)
fig, ax = plt.subplots(figsize=(8, 5))
# Tracé du nuage de points
ax.scatter(budget_pub, ventes, color='purple', alpha=0.6) # alpha gère la transparence
ax.set_title("Corrélation entre le Budget Pub et les Ventes")
ax.set_xlabel("Budget Publicitaire (€)")
ax.set_ylabel("Ventes générées")
# Ajout d'une grille pour faciliter la lecture
ax.grid(True, linestyle='--', alpha=0.5)
plt.show()
Bonnes pratiques et exportation
Une fois que votre graphique est parfait, vous voudrez l’intégrer dans une présentation ou un rapport. N’utilisez pas l’outil « Capture d’écran » de votre ordinateur, cela dégrade la qualité.
Matplotlib propose une fonction native d’exportation en très haute résolution :
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [10, 20, 15])
# Sauvegarder en image PNG haute qualité (300 dpi) ou en PDF
fig.savefig("mon_graphique.png", dpi=300, bbox_inches='tight')
L’argument bbox_inches='tight' est une astuce incontournable : il permet de s’assurer que les marges, les titres ou les légendes ne soient pas rognés lors de l’exportation.
En conclusion
Matplotlib peut paraître verbeux au premier abord, car il nécessite d’écrire plusieurs lignes de code pour un graphique simple. Cependant, cette rigueur est le prix à payer pour obtenir un contrôle absolu sur vos visualisations de données.
Une fois que vous maîtrisez la logique des « Figures » et des « Axes », vous serez capable de lire et de générer n’importe quel type de graphique en Python.



