Data Visualization

Dominando la Colocación de Leyendas en Matplotlib

Spread the love

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

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *