Matplotlib es una potente biblioteca de Python para crear visualizaciones, pero a veces la colocación predeterminada de la leyenda puede saturar sus gráficos. Este artículo muestra métodos efectivos para colocar leyendas fuera del área del gráfico para mejorar la legibilidad.
Tabla de contenido
- Usando
bbox_to_anchor
para la colocación de la leyenda - Prevenir leyendas recortadas con
bbox_extra_artists
ybbox_inches
Usando bbox_to_anchor
para la colocación de la leyenda
El argumento bbox_to_anchor
en la función legend()
ofrece una posición precisa de la leyenda. Toma una tupla (x, y) que especifica la esquina inferior izquierda de la leyenda en coordenadas de la figura. (0,0) es la esquina inferior izquierda, y (1,1) es la esquina superior derecha. El argumento loc
refina aún más la colocación dentro de ese punto de anclaje.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left') # Ajustar (1.1,1) según sea necesario
ax.set_title('Ondas seno y coseno')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.tight_layout()
plt.show()
Aquí, bbox_to_anchor=(1.1, 1)
coloca la leyenda ligeramente a la derecha del gráfico (x=1.1) y en la parte superior (y=1). loc='upper left'
alinea la leyenda dentro de ese anclaje. Experimente con diferentes valores de loc
(por ejemplo, ‘upper right’, ‘lower left’, ‘center’) y ajuste las coordenadas (x,y) para una posición óptima.
Prevenir leyendas recortadas con bbox_extra_artists
y bbox_inches
Las leyendas grandes o las figuras ajustadas pueden provocar leyendas recortadas incluso con bbox_to_anchor
. bbox_extra_artists
y bbox_inches
solucionan esto. bbox_extra_artists
incluye la leyenda en el cálculo del cuadro delimitador para guardar, y bbox_inches='tight'
asegura márgenes ajustados, evitando el recorte.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 500) # Más datos para una leyenda más grande
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.plot(x, y3, label='tan(x)')
leg = ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
fig.savefig('legend_outside.png', bbox_extra_artists=[leg], bbox_inches='tight')
plt.show()
La leyenda se almacena en leg
, luego se pasa a bbox_extra_artists
en savefig
. bbox_inches='tight'
asegura que toda la figura, incluida la leyenda, se guarde. Reemplace 'legend_outside.png'
con el nombre de archivo deseado.
Estas técnicas permiten una colocación flexible y efectiva de la leyenda en Matplotlib, mejorando la claridad y el atractivo visual de sus gráficos. Experimente con diferentes parámetros para lograr el diseño perfecto.