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

  1. Ejemplo de caja_de_anclas
  2. bbox_extra_artists y bbox_inches para evitar que la caja de la leyenda sea recortada

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.

Artículo relacionado - Matplotlib Legend

  • Título de la leyenda de Matplotlib
  • Cómo hacer la leyenda del diagrama de dispersión en Matplotlib