Skip to content

Cómo crear rápidamente múltiples gráficos de líneas con Matplotlib

Updated on

La visualización de datos es una parte clave de cualquier canalización de análisis de datos. Permite la representación clara e intuitiva de conjuntos de datos complejos y para descubrir tendencias y patrones que pueden no ser obvios solo con los datos en bruto. Entre la multitud de herramientas disponibles con este propósito, Matplotlib es una de las bibliotecas de Python más utilizadas, que proporciona una plataforma versátil y poderosa para crear gráficos estáticos, animados e interactivos.

Un recurso comúnmente utilizado en Matplotlib es su capacidad para crear múltiples gráficos de líneas en un solo gráfico. En esta guía integral, profundizaremos en los detalles de cómo puedes crear estas visualizaciones, enfocándonos tanto en los principios básicos como en conceptos más avanzados.

Lo básico: trazar dos líneas

Comencemos con un escenario simple: trazar dos gráficos de líneas en el mismo gráfico. Aquí está el código que un usuario publicó en un foro en línea, informando que el eje y se estaba imprimiendo dos veces:

import matplotlib.pyplot as plt
 
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
 
plt.plot(x, y1)
plt.plot(x, y2, '-.')
 
plt.xlabel("Datos del eje X")
plt.ylabel("Datos del eje Y")
plt.title('gráficos múltiples')
plt.show()

Un simple vistazo al código revela la raíz del problema: los valores de y que se están trazando son cadenas en lugar de números. Cuando matplotlib encuentra datos de cadena, no traza estos valores en una escala numérica. En cambio, simplemente traza las etiquetas de cadena en sus respectivas coordenadas x, lo que lleva a la superposición de múltiples etiquetas en el eje y.

Solucionar el problema de las cadenas: Conversión a numéricos

Para solucionar este problema, la 'k' en las cadenas debe reemplazarse por 'e3', lo que permite que estas cadenas representen números en notación científica. Luego, se pueden convertir a números de punto flotante utilizando la función float() de Python.

El código corregido se vería así:

import matplotlib.pyplot as plt
 
x = [0, 1, 2, 3, 4, 5]
 
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
 
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1])
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.')
 
plt.xlabel("Datos del eje X")
plt.ylabel("Datos del eje Y")
plt.title('gráficos múltiples')
plt.show()

Con este simple cambio, el usuario pudo trazar correctamente dos líneas en el mismo gráfico sin duplicar las etiquetas en el eje y. Sin embargo, es importante tener en cuenta que esta conversión se realiza únicamente con fines de trazado y no modifica los datos originales.

Ajustar gráficos de líneas múltiples: Leyendas, líneas de cuadrícula y anotaciones

Se pueden agregar leyendas al gráfico utilizando la función legend(), mientras que las líneas de cuadrícula se pueden activar o desactivar usando la función grid(). Para las anotaciones, se puede utilizar la función annotate() para agregar texto informativo al gráfico.

Aplicando estas técnicas, nuestro código final para crear gráficos de líneas múltiples en matplotlib podría verse así:

import matplotlib.pyplot as plt
 
x = [0, 1, 2, 3, 4, 5]
 
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
 
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1], label='Línea 1')
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.', label='Línea 2')
 
plt.xlabel("Datos del eje X")
plt.ylabel("Datos del eje Y")
plt.title('gráficos múltiples')
plt.grid(True)
plt.legend()
plt.annotate('Valor máximo para Línea 2', xy=(4, 85000), xytext=(3, 70000),
             arrowprops=dict(facecolor='black', shrink=0.05))
 
plt.show()

Como se puede ver, crear gráficos de líneas múltiples con Matplotlib es un proceso relativamente sencillo que ofrece una amplia gama de opciones de personalización para crear visualizaciones hermosas, informativas e instructivas.

Preguntas frecuentes

P: ¿Puedo trazar más de dos líneas en un solo gráfico con Matplotlib?

Sí, puedes trazar tantas líneas como necesites en un solo gráfico utilizando Matplotlib. Simplemente repite la función plot() con los datos deseados para cada línea.

P: ¿Qué otros tipos de gráficos puedo crear con Matplotlib?

Matplotlib admite una amplia variedad de otros tipos de gráficos, incluyendo gráficos de dispersión, gráficos de barras, histogramas e incluso gráficos 3D. La biblioteca es muy versátil y puede adaptarse a casi cualquier necesidad de visualización de datos.

P: ¿Cómo puedo guardar mi gráfico en un archivo usando Matplotlib?

Después de haber creado tu gráfico, puedes utilizar la función savefig() para guardarlo en un archivo. La función toma un nombre de archivo como argumento y puedes especificar el formato del archivo (por ejemplo, PNG, PDF, SVG, etc.) utilizando la extensión de archivo apropiada.

plt.savefig('mi_grafico.png')

Alternativa a Matplotlib: Visualiza datos con PyGWalker

Además de utilizar Matplotlib para visualizar tu marco de datos de pandas, aquí tienes una alternativa, una biblioteca de Python de código abierto que puede ayudarte a crear visualizaciones de datos con facilidad: PyGWalker (opens in a new tab).

PyGWalker para visualización de datos (opens in a new tab))

¡Ya no es necesario completar un procesamiento complicado con programación Python, simplemente importa tus datos y arrastra y suelta variables para crear todo tipo de visualizaciones de datos! Aquí tienes un video rápido sobre cómo se realiza la operación:


Aquí está cómo usar PyGWalker en tu Jupyter Notebook:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Alternativamente, puedes probarlo en Kaggle Notebook/Google Colab:

Ejecutar PyGWalker en Kaggle Notebook (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Darle ⭐️ a PyGWalker en GitHub (opens in a new tab)
Ejecutar PyGWalker en Kaggle Notebook (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)Ejecutar PyGWalker en Google Colab (opens in a new tab)

PyGWalker se construye con el apoyo de nuestra comunidad de código abierto. ¡No olvides visitar PyGWalker GitHub (opens in a new tab) y darnos una estrella!

Preguntas frecuentes

¿Puedo trazar más de dos líneas en un solo gráfico con Matplotlib?

Sí, puedes trazar tantas líneas como necesites en un solo gráfico utilizando Matplotlib. Simplemente repite la función plot() con los datos deseados para cada línea.

¿Qué otros tipos de gráficos puedo crear con Matplotlib?

Matplotlib soporta una amplia variedad de otros tipos de gráficos, incluyendo gráficos de dispersión, gráficos de barras, histogramas e incluso gráficos en 3D. La biblioteca es muy versátil y puede adaptarse a casi cualquier necesidad de visualización de datos.

¿Cómo puedo guardar mi gráfico en un archivo usando Matplotlib?

Después de haber creado tu gráfico, puedes usar la función savefig() para guardarlo en un archivo. La función toma un nombre de archivo como argumento, y puedes especificar el formato del archivo (por ejemplo, PNG, PDF, SVG, etc.) usando la extensión de archivo apropiada.