Data Visualization

Dominando las Leyendas en Matplotlib: Dos Métodos para Ajustar el Grosor de Línea

Spread the love

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()

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.

Deja una respuesta

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