W3docs

É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

ObjectifFonction (pyplot)Méthode (Axes)
Étiquette axe Xplt.xlabel()ax.set_xlabel()
Étiquette axe Yplt.ylabel()ax.set_ylabel()
Titre du graphiqueplt.title()ax.set_title()
Titre de figureplt.suptitle()fig.suptitle()
Légendeplt.legend()ax.legend()
Étiquettes graduation Xplt.xticks()ax.set_xticks() / ax.set_xticklabels()
Étiquettes graduation Yplt.yticks()ax.set_yticks() / ax.set_yticklabels()
Texte libreplt.text()ax.text()
Annoter + flècheplt.annotate()ax.annotate()

Chapitres connexes

Was this page helpful?