Tes scripts Python crachent des listes, des DataFrames, des logs. Pour y voir clair, tu ouvres un tableur, tu sélectionnes des colonnes, tu bidouilles un graphique, et le résultat est moche. Matplotlib règle le problème à la racine : c'est la bibliothèque de visualisation de référence de Python, celle que Pandas, NumPy et presque tout l'écosystème data utilisent sous le capot pour dessiner.
Ici, pas besoin d'être data scientist. En une poignée de lignes, tu transformes des chiffres bruts en courbes, en barres et en histogrammes, puis tu les exportes en PNG pour tes rapports, tes slides ou ton site. Le tout sans jamais rouvrir un tableur.
On part d'un cas concret : les ventes d'une semaine, rangées dans une simple liste Python. Chaque étape est indépendante et copiable telle quelle.
Pour suivre, il te faut Python 3 et rien d'autre. On touche à Pandas et NumPy dans deux exemples : si tu ne les as pas encore, un pip install pandas numpy les ajoute en trente secondes, mais les trois premières étapes fonctionnent sans.
1. Installer Matplotlib
Matplotlib s'installe en une commande. Si tu utilises déjà un notebook ou un environnement scientifique, il est probablement déjà présent : essaie d'abord de l'importer avant de l'installer.
pip install matplotlib2. Ta première courbe en cinq lignes
On trace les ventes de la semaine. plot() prend deux listes : les abscisses (les jours) et les ordonnées (les ventes). Le paramètre marker pose un point sur chaque valeur, color change la teinte, et grid() ajoute une grille discrète pour lire le graphique d'un coup d'œil.
import matplotlib.pyplot as plt
jours = ["Lun", "Mar", "Mer", "Jeu", "Ven"]
ventes = [120, 145, 132, 178, 205]
plt.plot(jours, ventes, marker="o", color="#2e7d32", linewidth=2)
plt.title("Ventes de la semaine")
plt.xlabel("Jour")
plt.ylabel("Ventes (euros)")
plt.grid(alpha=0.3)
plt.show()Petite précision : plt est l'alias classique de matplotlib.pyplot. On l'importe une seule fois en haut du script, et toutes les fonctions de tracé — plot, title, show, savefig — s'y accrochent.
3. Comparer deux séries avec une légende
Une courbe, c'est bien. Deux courbes qui se comparent, c'est mieux. On ajoute une seconde série — les ventes de la semaine précédente — et on la distingue grâce à label, que legend() affiche ensuite. Note la liste en compréhension [v * 0.8 for v in ventes] : elle simule des ventes inférieures de 20 % sans les écrire à la main.
plt.plot(jours, ventes, marker="o", label="Cette semaine")
plt.plot(jours, [v * 0.8 for v in ventes], marker="s", label="Semaine dernière")
plt.title("Comparaison des ventes")
plt.xlabel("Jour")
plt.ylabel("Ventes (euros)")
plt.legend()
plt.grid(alpha=0.3)
plt.show()4. Des barres pour les catégories
Quand tes données sont des catégories — des produits, des mois, des pays — la courbe ne veut rien dire. Le diagramme en barres est bien plus lisible : bar() prend la liste des noms puis celle des valeurs. Ici on lit directement un DataFrame Pandas, sans conversion.
import pandas as pd
data = pd.DataFrame({
"Produit": ["Clavier", "Souris", "Écran", "Webcam", "Casque"],
"Ventes": [310, 480, 220, 190, 260],
})
plt.bar(data["Produit"], data["Ventes"], color="#1f77b4")
plt.title("Ventes par produit")
plt.ylabel("Unités vendues")
plt.xticks(rotation=15)
plt.tight_layout()
plt.show()5. L'histogramme pour voir la distribution
Avec des centaines de mesures — temps de réponse, tailles de fichiers, prix — tu ne veux pas voir chaque point, tu veux voir leur répartition. hist() découpe les valeurs en tranches (bins) et compte combien tombent dans chacune. On génère ici mille temps de réponse fictifs autour de 60 ms avec NumPy, et la bosse qui se dessine te dit d'emblée où se situe la majorité.
import numpy as np
rng = np.random.default_rng(42)
temps = rng.normal(loc=60, scale=15, size=1000) # 1000 temps de réponse en ms
plt.hist(temps, bins=30, color="#ff7043", edgecolor="white")
plt.title("Distribution des temps de réponse")
plt.xlabel("Millisecondes")
plt.ylabel("Fréquence")
plt.show()6. Exporter en PNG ou PDF
show() ouvre une fenêtre interactive pour explorer. Mais pour un rapport, un site ou un mail, tu veux un fichier. savefig() écrit l'image sur le disque en une ligne : PNG pour le web, PDF pour l'impression, et le paramètre dpi contrôle la netteté. Remplace simplement show() par savefig() dans les exemples précédents.
plt.savefig("ventes.png", dpi=150) # PNG net pour le web
plt.savefig("rapport.pdf") # PDF pour l'impression7. Aller plus loin sans se noyer
Une fois les bases en main, deux raccourcis changent la donne. plt.style.use() applique un thème complet en une ligne, et plt.subplots() juxtapose plusieurs graphiques pour comparer sans changer d'écran. Pas besoin de tout mémoriser : la galerie officielle de Matplotlib est une mine d'exemples prêts à copier.
plt.style.use("ggplot") # thème prêt à l'emploi
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
axes[0].plot(jours, ventes, marker="o")
axes[1].bar(data["Produit"], data["Ventes"])
plt.tight_layout()
plt.show()Voilà, tu sais transformer des chiffres bruts en graphiques propres. Matplotlib fait bien plus — cartes thermiques, échelles logarithmiques, annotations — mais ces sept briques couvrent déjà 90 % des besoins du quotidien. La prochaine fois que tes données ne veulent rien te dire, commence par les dessiner : une courbe vaut mille lignes de log.






