Matplotlib es una potente biblioteca de Python para crear visualizaciones. Las leyendas son esenciales para comprender las gráficas, y personalizar su apariencia mejora la legibilidad. Este artículo muestra dos métodos para ajustar el ancho de línea en las leyendas de Matplotlib.
Tabla de Contenidos
- Establecer el Ancho de Línea Directamente con
set_linewidth()
- Usando
matplotlib.pyplot.setp()
para una Modificación Concisa - Preguntas Frecuentes
Establecer el Ancho de Línea Directamente con set_linewidth()
El método set_linewidth()
ofrece un control preciso sobre las líneas individuales de la leyenda. Manipula directamente los legendHandles
de la leyenda, que son objetos Line2D.
import matplotlib.pyplot as plt
# Datos de muestra
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# Crear la gráfica
fig, ax = plt.subplots()
line1, = ax.plot(x, y1, label='Línea 1', linewidth=2)
line2, = ax.plot(x, y2, label='Línea 2', linewidth=1)
# Crear la leyenda
legend = ax.legend()
# Acceder y modificar el ancho de línea
legend.legendHandles[0].set_linewidth(4) # Línea 1 en la leyenda
legend.legendHandles[1].set_linewidth(3) # Línea 2 en la leyenda
# Mostrar la gráfica
plt.show()
Este código primero grafica los datos, luego accede a los manejadores de la leyenda a través de legend.legendHandles
. set_linewidth()
ajusta el ancho de cada línea. legendHandles[0]
se refiere a la primera línea, y así sucesivamente.
Usando matplotlib.pyplot.setp()
para una Modificación Concisa
matplotlib.pyplot.setp()
proporciona una forma más compacta de modificar varias propiedades simultáneamente.
import matplotlib.pyplot as plt
# Datos de muestra (igual que antes)
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# Crear la gráfica
fig, ax = plt.subplots()
line1, = ax.plot(x, y1, label='Línea 1', linewidth=2)
line2, = ax.plot(x, y2, label='Línea 2', linewidth=1)
# Crear la leyenda
legend = ax.legend()
# Modificar el ancho de línea usando setp()
plt.setp(legend.legendHandles, 'linewidth', [4, 3])
# Mostrar la gráfica
plt.show()
plt.setp()
establece eficientemente el linewidth
para todos los manejadores. [4, 3]
especifica el ancho para cada línea, en orden de aparición.
Preguntas Frecuentes
P: ¿Qué pasa si tengo más de dos líneas?
R: Ambos métodos se adaptan fácilmente. Para set_linewidth()
, extiende la indexación. Para setp()
, asegúrate de que la lista de anchos de línea coincida con el número de manejadores de leyenda.
P: ¿Puedo cambiar otras propiedades de la leyenda?
R: Sí, ambos métodos modifican propiedades como el color, el estilo de línea y el marcador. Consulta la documentación de Matplotlib.
P: ¿Qué método debo elegir?
R: set_linewidth()
ofrece un control granular para líneas individuales. setp()
es más conciso para modificar la misma propiedad en todas las líneas. Elige según tus necesidades y estilo de codificación.
Este artículo proporciona dos enfoques efectivos para mejorar la claridad y el impacto visual de la leyenda de Matplotlib. Consulta la documentación de Matplotlib para una personalización avanzada.