Étiquettes Matplotlib
Apprenez à ajouter et personnaliser les étiquettes d'axes, titres, légendes, étiquettes de graduation et annotations textuelles dans Matplotlib avec des exemples Python.
Les étiquettes transforment un graphique brut en une histoire lisible. Ce chapitre couvre tous les principaux éléments d'étiquetage dans Matplotlib : étiquettes d'axes, titres de graphique, légendes, étiquettes de graduation et annotations textuelles. Pour chaque élément, vous découvrirez la fonction essentielle, ses paramètres les plus utiles et des exemples pratiques que vous pouvez exécuter immédiatement.
Avant de commencer, assurez-vous que Matplotlib est installé. Consultez Matplotlib Getting Started pour les instructions de configuration.
Définir les étiquettes d'axes
Les fonctions xlabel() et ylabel() attachent un texte descriptif aux axes horizontal et vertical. Les deux acceptent les mêmes paramètres.
import matplotlib.pyplot as plt
height = [63, 64, 65, 66, 67, 68, 69, 70, 71, 72]
weight = [127, 130, 133, 136, 139, 142, 145, 148, 151, 154]
plt.scatter(height, weight)
plt.xlabel('Height (inches)')
plt.ylabel('Weight (pounds)')
plt.show()Personnaliser l'apparence des étiquettes
Les deux fonctions acceptent un argument fontsize (en points) et n'importe quel mot-clé de la classe Text de Matplotlib, comme color, fontweight et fontstyle.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.xlabel('Time (seconds)', fontsize=13, color='steelblue', fontweight='bold')
plt.ylabel('Distance (meters)', fontsize=13, color='steelblue', fontweight='bold')
plt.show()Ajuster l'espacement des étiquettes
Utilisez le paramètre labelpad pour éloigner une étiquette des marques de graduation de l'axe — utile lorsque les étiquettes de graduation sont longues ou pivotées.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1000, 2000, 3000, 4000, 5000]
plt.plot(x, y)
plt.xlabel('Quarter', labelpad=12)
plt.ylabel('Revenue ($)', labelpad=16)
plt.show()Ajouter un titre de graphique
La fonction title() ajoute un titre centré au-dessus du graphique par défaut.
import matplotlib.pyplot as plt
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
sales = [25000, 30000, 45000, 35000, 50000, 60000,
70000, 80000, 90000, 100000, 110000, 120000]
plt.plot(months, sales)
plt.title('Monthly Sales')
plt.xlabel('Month')
plt.ylabel('Sales ($)')
plt.show()Positionnement et style du titre
Passez loc ('left', 'center', 'right') pour modifier l'alignement horizontal, et pad pour contrôler l'écart entre le titre et le haut du graphique.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [3, 7, 2, 9, 4]
plt.plot(x, y, marker='o')
plt.title('Sensor Readings', loc='left', pad=14,
fontsize=15, fontweight='bold', color='darkslategray')
plt.show()Titre de figure avec suptitle()
Lorsqu'une figure contient plusieurs sous-graphiques, utilisez suptitle() pour ajouter un titre unique couvrant l'ensemble. Les sous-graphiques individuels peuvent toujours avoir leur propre title().
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 3))
ax1.plot([1, 2, 3], [4, 5, 6])
ax1.set_title('Product A')
ax2.plot([1, 2, 3], [6, 5, 4])
ax2.set_title('Product B')
fig.suptitle('Q1 Sales Comparison', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()tight_layout() empêche le titre de la figure de chevaucher le contenu des sous-graphiques. Consultez Matplotlib Subplots pour un traitement complet des figures multi-panneaux.
Personnaliser la légende
Une légende identifie les séries de données dans votre graphique. Appelez legend() après avoir tracé les séries.
Légende de base
Passez un mot-clé label à chaque appel de tracé, puis appelez plt.legend() pour l'afficher.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
plt.plot(x, [2, 4, 6, 8, 10], label='Series A')
plt.plot(x, [1, 3, 5, 7, 9], label='Series B')
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.title('Two Series')
plt.show()Position de la légende
Passez le paramètre loc pour positionner précisément la légende. Valeurs courantes : 'upper left', 'upper right', 'lower left', 'lower right', 'center', ou 'best' (Matplotlib choisit la position avec le moins de chevauchement — valeur par défaut).
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
plt.plot(x, [2, 4, 6, 8, 10], label='Revenue')
plt.plot(x, [1, 2, 3, 4, 5], label='Costs')
plt.legend(loc='upper left')
plt.show()Légende à l'extérieur des axes
Utilisez bbox_to_anchor conjointement avec loc pour placer la légende en dehors de la zone de tracé. Appelez tight_layout() ou ajustez subplots_adjust pour que la légende ne soit pas rognée.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
fig, ax = plt.subplots()
ax.plot(x, [1, 4, 9, 16], label='Quadratic')
ax.plot(x, [1, 8, 27, 64], label='Cubic')
ax.legend(loc='upper left', bbox_to_anchor=(1, 1))
plt.tight_layout()
plt.show()Styliser la légende
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
plt.plot(x, [2, 4, 6, 8, 10], label='Actual')
plt.plot(x, [1, 3, 5, 7, 9], label='Forecast', linestyle='--')
plt.legend(
title='Data',
fontsize=11,
title_fontsize=12,
framealpha=0.9,
edgecolor='gray',
)
plt.show()framealpha contrôle l'opacité du cadre de la légende (0 = transparent, 1 = opaque). title ajoute un en-tête à l'intérieur du cadre de la légende.
Personnaliser les étiquettes de graduation
Les étiquettes de graduation sont les chiffres ou chaînes que Matplotlib affiche le long de chaque axe. Utilisez xticks() et yticks() pour les remplacer.
Faire pivoter les étiquettes de graduation
Les noms de catégories longs se chevauchent par défaut. Faites-les pivoter avec le paramètre rotation.
import matplotlib.pyplot as plt
categories = ['January', 'February', 'March', 'April', 'May', 'June']
values = [12, 19, 14, 22, 18, 25]
plt.bar(categories, values)
plt.xticks(rotation=45, ha='right')
plt.ylabel('Units sold')
plt.title('Monthly Sales')
plt.tight_layout()
plt.show()ha='right' aligne le bord droit de chaque étiquette avec sa marque de graduation, ce qui est plus net après rotation.
Définir des valeurs et étiquettes de graduation personnalisées
Passez deux listes à xticks() : les positions des graduations et les chaînes à afficher.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
plt.plot(x, np.sin(x))
ticks = [0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi]
labels = ['0', 'π/2', 'π', '3π/2', '2π']
plt.xticks(ticks, labels, fontsize=12)
plt.ylabel('sin(x)')
plt.title('Sine Wave with Custom Tick Labels')
plt.show()Styliser la police des étiquettes de graduation
xticks() et yticks() acceptent tous les deux des arguments de police directement.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 30, 25]
plt.plot(x, y)
plt.xticks(fontsize=12, color='steelblue')
plt.yticks(fontsize=12, color='steelblue')
plt.show()Ajouter des annotations textuelles
La fonction text() place une chaîne à une position arbitraire dans le système de coordonnées des axes.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 3, 6, 5]
plt.plot(x, y, marker='o')
plt.text(3, 3.2, 'dip here', fontsize=11, color='crimson')
plt.title('Text Annotation Example')
plt.show()Les deux premiers arguments sont les coordonnées x et y en unités de données.
Annoter avec une flèche
annotate() dessine une étiquette avec une flèche optionnelle pointant vers un point de données spécifique. C'est l'outil approprié lorsque vous souhaitez mettre en évidence des valeurs aberrantes ou des pics.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [4, 7, 2, 9, 3]
plt.plot(x, y, marker='o')
plt.annotate(
'Peak',
xy=(4, 9), # tip of the arrow (the data point)
xytext=(3.2, 9.5), # where the label sits
arrowprops=dict(arrowstyle='->', color='black'),
fontsize=12,
)
plt.title('Annotated Line Plot')
plt.show()API orientée objet : utiliser les méthodes Axes
Toutes les fonctions ci-dessus sont des raccourcis pratiques autour des axes actifs courants. Lorsque vous travaillez avec plusieurs sous-graphiques — ou lorsque vous avez besoin d'un contrôle précis — utilisez directement les méthodes de l'objet Axes : ax.set_xlabel(), ax.set_ylabel(), ax.set_title(), ax.legend() et ax.set_xticks().
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
months = ['Jan', 'Feb', 'Mar', 'Apr']
revenue = [12000, 15000, 13000, 18000]
costs = [8000, 9000, 10000, 11000]
ax.plot(months, revenue, marker='o', label='Revenue')
ax.plot(months, costs, marker='s', label='Costs', linestyle='--')
ax.set_xlabel('Month', fontsize=12)
ax.set_ylabel('Amount ($)', fontsize=12)
ax.set_title('Revenue vs Costs — Q1', fontsize=14)
ax.legend(loc='upper left')
plt.tight_layout()
plt.show()Privilégiez le style orienté objet lorsque votre script crée plus d'un axe. Les raccourcis plt.* redirigent vers les axes actuellement actifs, ce qui peut provoquer des bugs difficiles à tracer dans les figures à plusieurs sous-graphiques.
Référence rapide
| Objectif | Fonction (pyplot) | Méthode (Axes) |
|---|---|---|
| Étiquette axe X | plt.xlabel() | ax.set_xlabel() |
| Étiquette axe Y | plt.ylabel() | ax.set_ylabel() |
| Titre du graphique | plt.title() | ax.set_title() |
| Titre de figure | plt.suptitle() | fig.suptitle() |
| Légende | plt.legend() | ax.legend() |
| Étiquettes graduation X | plt.xticks() | ax.set_xticks() / ax.set_xticklabels() |
| Étiquettes graduation Y | plt.yticks() | ax.set_yticks() / ax.set_yticklabels() |
| Texte libre | plt.text() | ax.text() |
| Annoter + flèche | plt.annotate() | ax.annotate() |
Chapitres connexes
- Matplotlib Plotting — tracer des lignes et des points
- Matplotlib Line — options de style et de couleur des lignes
- Matplotlib Markers — formes et tailles des marqueurs
- Matplotlib Grid — ajouter des lignes de grille à un graphique
- Matplotlib Subplots — figures multi-panneaux