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

Jinku Hu 8 junio 2021 2 mayo 2020 Matplotlib Matplotlib Legend
  1. Ejemplo de caja_de_anclas
  2. bbox_extra_artists y bbox_inches para evitar que la caja de la leyenda sea recortada
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.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

Artículo relacionado - Matplotlib Legend

  • Cómo cambiar el tamaño de la fuente de la leyenda en Matplotlib
  • Cómo crear una única leyenda para todas las subtramas de Matplotlib
  • Cómo establecer el ancho de línea de las líneas en la leyenda Matplotlib
  • Cómo eliminar la leyenda en Matplotlib
  • Título de la leyenda de Matplotlib