HOWTO · Matplotlib

Cómo colocar la leyenda fuera de la trama en Matplotlib

Este tutorial introduce cómo colocar la leyenda fuera de la trama en Matplotlib.

La leyenda puede ser colocada fuera de la trama en Matplotlib usando bbox_to_anchor. bbox significa bounding box que acomoda la leyenda.

plt.legend(bbox_to_anchor=(1.05, 1))

Coloca la leyenda en la posición (1.05, 1) en la coordenada de los ejes. (0, 0) es la esquina inferior izquierda, y (1.0, 1.0) es la esquina superior derecha de la coordenada del eje.

El tamaño real y la posición del cuadro delimitador de la leyenda se definen con el parámetro 4-tuple de bbox_to_anchor y loc en la legend plt.

plt.legend(bbox_to_anchor=(x0, y0, width, height), loc=)

El width y la height son el ancho y la altura del cuadro de la leyenda, y (x0, y0) es la coordenada del lugar del cuadro delimitador.

El valor de loc podría ser un número o una cadena que tiene la relación que se muestra a continuación,

Número de Loc Loc String
0 best
1 upper right
2 upper left
3 lower left
4 lower right
5 right
6 center left
7 center right
8 lower center
9 upper center
10 center
plt.legend(bbox_to_anchor=(1.05, 1.0, 0.3, 0.2), loc="upper left")

El código anterior significa que el cuadro de la leyenda está posicionado en la coordenada de los ejes (1.05, 1.0) que tiene el ancho de 0.3 y la altura de 0.2, donde (1.05, 1.0) es la coordenada de la esquina superior izquierda del cuadro delimitador de la leyenda.

Ejemplo de caja_de_anclas

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)

plt.plot(x, np.sin(x), label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")


plt.legend(bbox_to_anchor=(1.05, 1.0), loc="upper left")
plt.tight_layout()
plt.show()

Leyenda Matplotlib bbox_to_anchor Ejemplo

plt.tight_layout() hace que las subtramas encajen bien en la figura.

La caja de la leyenda sería recortada si no se llama tight_layout().

Leyenda de Matplotlib bbox_to_anchor Recortada

bbox_extra_artists y bbox_inches para evitar que la caja de la leyenda sea recortada

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)

plt.plot(x, np.sin(x), label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")


lg = plt.legend(bbox_to_anchor=(1.05, 1.0), loc="upper left")

plt.savefig(
    "example.png", dpi=300, format="png", bbox_extra_artists=(lg,), bbox_inches="tight"
)

bbox_extra_artistas especifica la lista de Artist que se tendrá en cuenta cuando se calcule la ajustada bbox.

Si la bbox_inches está configurada para ser tight, calculará la bbox apretada de la figura.