HOWTO · Matplotlib
Afficher les lettres grecques en Python Matplotlib
Ce tutoriel explique comment afficher les lettres grecques avec matplotlib en Python.
Sur cette page
Pour insérer des lettres grecques dans un titre, une étiquette d’axe ou une annotation Matplotlib, utilisez Mathtext, par exemple r"$\alpha$", construisez un caractère à partir de son point de code Unicode avec chr() en Python, ou saisissez directement le caractère Unicode dans une chaîne. Mathtext est généralement le choix le plus simple pour les étiquettes mathématiques ; Unicode direct convient bien au texte courant, tandis que TextPath est utile lorsqu’une étiquette doit être manipulée comme un tracé. (matplotlib)
Afficher des lettres grecques dans Matplotlib avec Mathtext
L’analyseur Mathtext intégré à Matplotlib comprend de nombreuses expressions mathématiques courantes sans qu’il soit nécessaire d’activer le rendu LaTeX externe. Encadrez l’expression de signes dollar et utilisez une chaîne brute Python afin que les barres obliques inverses parviennent à l’analyseur sans modification. Faites précéder le nom d’une lettre grecque d’une barre oblique inverse : r"$\alpha$" affiche α. Cette syntaxe fonctionne aussi dans les titres, les étiquettes d’axes et les annotations.
Cet exemple complet place deux symboles dans le titre du graphique et ajoute une étiquette à chacun des axes :
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title(r"$\alpha$ and $\beta$")
ax.set_xlabel(r"$\mu$")
ax.set_ylabel(r"$\sigma$")
plt.show()
Vous pouvez combiner Mathtext avec du texte ordinaire en plaçant l’expression dans la même chaîne, par exemple r"Mean $\mu$ and spread $\sigma$". Encadrez chaque expression mathématique de sa propre paire de signes dollar. Pour afficher un signe dollar littéral ou utiliser une notation plus avancée, consultez la syntaxe Mathtext de Matplotlib ; l’exemple présenté ici ne nécessite pas text.usetex=True.
Convertir des points de code Unicode avec chr() en Python
En Python, chr() prend un point de code Unicode entier et renvoie le caractère correspondant. Par exemple, chr(945) renvoie α. Les valeurs de 945 à 969 couvrent des points de code de lettres grecques minuscules, dont le sigma final (ς). chr() fonctionne avec les points de code Unicode en général, et pas seulement avec des valeurs alphabétiques. Cette méthode est pratique lorsque le symbole provient de données ou d’une configuration numérique.
import matplotlib.pyplot as plt
alpha = chr(945)
beta = chr(946)
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title(f"{alpha} and {beta}")
ax.set_xlabel(alpha)
plt.show()
Les caractères obtenus peuvent être combinés à du texte ordinaire ou à d’autres chaînes, comme n’importe quelle autre chaîne Python. chr() convertit un point de code en caractère ; elle ne convertit pas un caractère en entier. Pour trouver un symbole qui ne figure pas dans les exemples précédents, choisissez son point de code dans un tableau de caractères Unicode.
Utiliser directement des caractères Unicode dans Matplotlib
Pour une courte étiquette, vous pouvez saisir directement un caractère grec dans une chaîne Python 3. Le texte voulu est alors souvent plus facile à lire dans le code source. La police sélectionnée par Matplotlib doit contenir le glyphe ; si le caractère apparaît sous forme de carré ou ne s’affiche pas, choisissez une police qui le prend en charge.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("α and β")
ax.set_xlabel("μ")
ax.set_ylabel("σ")
plt.show()
L’importation Python 2 unicode_literals du module __future__ n’est mentionnée qu’à titre de contexte historique sur la compatibilité. Pour le code Python actuel, utilisez le fonctionnement normal des chaînes Python 3 présenté ci-dessus.
Créer des étiquettes textuelles sous forme de tracés avec TextPath
TextPath transforme du texte en tracé Matplotlib, que vous pouvez ajouter comme patch et mettre en forme. C’est une option avancée pour créer des étiquettes ou des formes personnalisées à partir de tracés ; pour les titres et les étiquettes d’axes ordinaires, les méthodes précédentes sont plus simples. Comme pour les autres méthodes d’affichage de texte, l’apparence des glyphes dépend des polices disponibles.
L’exemple suivant crée un tracé pour α-beta, l’ajoute à un objet Axes et adapte les limites de l’axe au tracé :
Les étiquettes visibles de cet exemple conservé restent en anglais.
import matplotlib.pyplot as plt
from matplotlib.patches import PathPatch
from matplotlib.textpath import TextPath
text_path = TextPath((0, 0), "α-beta", size=24)
patch = PathPatch(text_path, facecolor="royalblue", edgecolor="none")
fig, ax = plt.subplots()
ax.add_patch(patch)
ax.autoscale_view()
ax.set_aspect("equal")
ax.set_axis_off()
plt.show()
Les coordonnées de TextPath définissent la forme de l’étiquette et sa position de départ. PathPatch définit le remplissage, et autoscale_view() ajuste la zone visible des axes pour inclure le patch ajouté. Pour des titres, des étiquettes ou des annotations ordinaires, préférez Mathtext ou Unicode afin que Matplotlib gère le placement et l’alignement du texte.