HOWTO · Matplotlib

Cómo configurar el tamaño de fuente de las etiquetas de título y ejes de la figura en Matplotlib

El tamaño y la fuente del título y los ejes en Matplotlib se pueden establecer utilizando el parámetro de tamaño de fuente, label.set_size() y el diccionario rcParams.

En esta página

Para una sola gráfica, pasa fontsize a las llamadas que establecen el título y las etiquetas. Para aplicar valores predeterminados reutilizables, actualiza rcParams; para cambiar objetos de texto existentes de forma individual, llama a set_size(). Los ejemplos usan un título de Axes. El título de toda la figura se establece por separado con fig.suptitle().

Establecer el tamaño del título y las etiquetas de los ejes con fontsize

Pasa fontsize directamente a Axes.set_title(), Axes.set_xlabel() y Axes.set_ylabel(). Estas llamadas controlan el título y las etiquetas de ese Axes. Si también quieres un título para toda la figura, usa fig.suptitle() y asígnale su propio valor de fontsize.

Matplotlib expresa los tamaños de fuente numéricos en puntos. Puedes usar el mismo valor en varias llamadas para lograr una apariencia uniforme, o elegir un tamaño mayor para el título y crear una jerarquía visual. Como el valor se pasa a cada llamada que establece texto, puedes cambiar una etiqueta sin modificar las demás.

Este ejemplo completo crea una gráfica, establece el título del Axes y ambas etiquetas, y añade un título independiente para la figura. Cambia los tamaños en puntos para adaptarlos a tu diseño. Las etiquetas visibles del ejemplo siguen en inglés porque el bloque de código se conserva sin cambios.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x", fontsize=16)
ax.set_xlabel("x", fontsize=12)
ax.set_ylabel("value", fontsize=12)
fig.suptitle("Example figure", fontsize=20)
plt.show()

Establecer los tamaños de fuente predeterminados con rcParams

rcParams almacena los valores de configuración predeterminados de Matplotlib. Al modificarlos, cambian los valores que usan los elementos de las gráficas creados posteriormente en el proceso de Python actual. Establece estos valores antes de crear la gráfica si quieres que se apliquen de forma uniforme; pasa fontsize en una llamada concreta cuando ese texto necesite otro tamaño.

Usa axes.labelsize para las etiquetas de los ejes x e y, axes.titlesize para los títulos de Axes y figure.titlesize para los títulos de figura creados con fig.suptitle(). Las dos primeras opciones son independientes de la configuración del título de la figura. Estos parámetros aceptan un tamaño expresado en puntos o un nombre de tamaño admitido.

import matplotlib.pyplot as plt

plt.rcParams.update({
    "axes.labelsize": 12,
    "axes.titlesize": 16,
    "figure.titlesize": 20,
})

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x")
ax.set_xlabel("x")
ax.set_ylabel("value")
fig.suptitle("Example figure")
plt.show()

Si solo una gráfica necesita valores predeterminados distintos, usa matplotlib.rc_context() para aplicar ajustes temporales de rcParams a un bloque de código. Así, esos ajustes no se convierten en los valores predeterminados de las gráficas posteriores del proceso.

Por ejemplo, with plt.rc_context({"axes.labelsize": 12, "axes.titlesize": 16}): limita esos dos ajustes al código de trazado indentado. Al salir del bloque, Matplotlib restaura los valores anteriores. Esto resulta útil en un script que crea gráficas con estilos distintos.

Ajustar individualmente el tamaño de títulos y etiquetas con set_size()

Cada título o etiqueta de eje es un objeto de texto que tiene un método set_size(). Es útil cuando la gráfica ya existe o cuando el título y las etiquetas necesitan valores distintos. El siguiente ejemplo obtiene el Axes actual con plt.gca() y cambia el tamaño del texto de su título y sus etiquetas.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x")
ax.set_xlabel("x")
ax.set_ylabel("value")

axes = plt.gca()
axes.title.set_size(16)
axes.xaxis.label.set_size(12)
axes.yaxis.label.set_size(12)
plt.show()

Cuando trabajes con varios Axes, conserva una referencia al que quieras modificar, por ejemplo, ax.title.set_size(16), en vez de depender de plt.gca(), que devuelve el Axes que esté activo. Para un título de toda la figura, establece el tamaño al llamar a fig.suptitle() o conserva el objeto de texto que devuelve y llama a set_size() en él. El título de un Axes corresponde a un panel; el título de la figura describe la figura completa.