HOWTO · Matplotlib

Mostrar letras griegas en Python Matplotlib

Este tutorial explica cómo mostrar letras griegas con matplotlib en Python.

En esta página

Para incluir letras griegas en un título, una etiqueta de eje o una anotación de Matplotlib, puedes usar Mathtext, por ejemplo r"$\alpha$"; construir un carácter a partir de su punto de código Unicode con chr() de Python; o escribir directamente el carácter Unicode en una cadena. Mathtext suele ser la opción más sencilla para etiquetas matemáticas; Unicode directo resulta práctico para texto normal, mientras que TextPath es útil cuando necesitas manejar una etiqueta como un trazado. (matplotlib)

Mostrar letras griegas en Matplotlib con Mathtext

El analizador Mathtext integrado en Matplotlib entiende muchas expresiones matemáticas habituales sin necesidad de activar la representación con LaTeX externo. Rodea la expresión con signos de dólar y usa una cadena sin procesar de Python para que las barras invertidas lleguen intactas al analizador. Antepon una barra invertida al nombre de la letra griega: r"$\alpha$" representa α. Esta sintaxis también funciona en títulos, etiquetas de ejes y anotaciones.

Este ejemplo completo incluye dos símbolos en el título del gráfico y añade etiquetas a ambos ejes:

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()

Puedes combinar Mathtext con palabras normales colocando la expresión en la misma cadena, por ejemplo r"Mean $\mu$ and spread $\sigma$". Rodea cada expresión matemática con su propio par de signos de dólar. Para incluir un signo de dólar literal o usar una notación más avanzada, consulta la sintaxis de Mathtext de Matplotlib; este ejemplo no requiere text.usetex=True.

Convertir puntos de código Unicode con chr() de Python

chr() de Python recibe un punto de código Unicode entero y devuelve el carácter correspondiente. Por ejemplo, chr(945) devuelve α. Los valores del 945 al 969 abarcan puntos de código de letras griegas minúsculas, incluida la sigma final (ς). chr() funciona en general con puntos de código Unicode, no solo con valores alfabéticos. Este método resulta útil cuando el símbolo procede de datos o de una configuración numérica.

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()

Los caracteres devueltos se pueden combinar con texto normal u otras cadenas como cualquier otra cadena de Python. chr() convierte un punto de código en un carácter; no convierte un carácter en un entero. Si necesitas un símbolo distinto de los ejemplos anteriores, busca su punto de código en una tabla de caracteres Unicode.

Usar caracteres Unicode directamente en Matplotlib

Para una etiqueta breve, puedes escribir un carácter griego directamente en una cadena de Python 3. Así, a menudo es más fácil leer el texto previsto en el código fuente. La fuente seleccionada en Matplotlib debe incluir el glifo; si el carácter aparece como un recuadro o no se muestra, elige una fuente compatible.

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()

La importación de Python 2 unicode_literals desde el módulo __future__ solo se incluye como contexto histórico de compatibilidad. Para el código actual, usa el flujo habitual de cadenas de Python 3 que se muestra arriba.

Crear etiquetas de texto basadas en trazados con TextPath

TextPath convierte texto en un trazado de Matplotlib que puedes añadir y aplicar estilo como si fuera un parche. Es una opción avanzada para crear etiquetas o formas personalizadas basadas en trazados; los métodos anteriores son más sencillos para los títulos y las etiquetas de ejes habituales. El aspecto de los glifos depende de las fuentes disponibles, igual que ocurre con el resto del texto.

El siguiente ejemplo crea un trazado para α-beta, lo añade a unos ejes y ajusta la vista para que el trazado quede dentro de ellos:

Las etiquetas visibles de este ejemplo conservado permanecen en inglés.

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()

Las coordenadas de TextPath definen la forma de la etiqueta y su posición inicial. PathPatch proporciona el estilo de relleno, y autoscale_view() ajusta los ejes visibles para incluir el parche añadido. Para títulos, etiquetas o anotaciones normales, es preferible usar Mathtext o Unicode, de modo que Matplotlib gestione la colocación y la alineación del texto.