Diagrama de líneas de Matplotlib - Tutorial y ejemplos

En este tutorial, repasaremos cómo trazar un gráfico de líneas en Matplotlib y Python. Repasaremos diagramas de líneas simples, así como también los personalizaremos para usar escala logarítmica y personalizar elementos.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Desde visualizaciones simples a complejas, es la biblioteca de referencia para la mayoría.

En este tutorial, veremos cómo trazar un diagrama de líneas en Matplotlib, uno de los tipos de diagramas más básicos.

Los gráficos de líneas muestran valores numéricos en un eje y valores categóricos en el otro. Por lo general, se pueden usar de la misma manera que Parcelas de barras, aunque se usan más comúnmente para realizar un seguimiento de los cambios a lo largo del tiempo.

Trace un diagrama de líneas en Matplotlib

Para trazar un gráfico de líneas en Matplotlib, utiliza la función genérica plot() de la instancia de PyPlot. No hay una función lineplot() específica - la genérica traza automáticamente usando líneas o marcadores.

Hagamos nuestro propio pequeño conjunto de datos para trabajar con:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]
y = [1, 5, 3, 5, 7, 8]

plt.plot(x, y)
plt.show()

Esto da como resultado un diagrama de línea simple:

simple line plot matplotlib

Alternativamente, podríamos haber omitido por completo el eje ‘x’ y simplemente graficar ‘y’. Esto daría como resultado que el eje X se llenara con range(len(y)):

1
2
3
4
5
import matplotlib.pyplot as plt
y = [1, 5, 3, 5, 7, 8]

plt.plot(y)
plt.show()

Esto da como resultado un gráfico de líneas muy parecido al anterior, ya que se infieren los valores de x.

Esto da como resultado un gráfico de líneas muy parecido al anterior, ya que se infieren los valores de x. Los valores de x, ya sean inferidos o establecidos manualmente por nosotros, como en el primer ejemplo, tienen la misma forma que y. Si y tiene 10 valores, x también debería:

inferring x value matplotlib

Sin embargo, podemos cambiar este comportamiento e ir por encima de ese rango, en cuyo caso, los valores y se asignarán a esos en su lugar:

1
2
3
4
5
6
import matplotlib.pyplot as plt
y = [1, 5, 3, 5, 7, 8]
x = [10, 20, 30, 40, 50, 60]

plt.plot(x, y)
plt.show()

Esto resulta en:

uniform x values matplotlib

Hemos estado lidiando con valores x uniformes hasta ahora. Veamos qué pasa si cambiamos la distribución:

1
2
3
4
5
6
import matplotlib.pyplot as plt
y = [1, 5, 3, 5, 7, 8]
x = [1, 2, 3, 4, 5, 20]

plt.plot(x, y)
plt.show()

El primer par de valores establece la escala. Y 1, 5, 3, 5, 7 son, como de costumbre, asignados a 1, 2, 3, 4, 5. Sin embargo, dado que ‘20’ saltó de la nada, ‘8’ no se puede mapear directamente.

El eje X mantiene su escala uniforme y agrega un montón de valores faltantes de 5..20, luego, asigna 8 a 20, lo que da como resultado una línea recta de 7..8 en el eje Y:

non uniform x values matplotlib

Trazar un diagrama de líneas logarítmicamente en Matplotlib

Cuando se trata de conjuntos de datos que tienen números cada vez más grandes, y especialmente si su distribución se inclina hacia ser exponencial, es común trazar un gráfico de líneas en una escala logarítmica.

En lugar de que el eje Y sea uniformemente lineal, esto cambiará cada intervalo para que sea exponencialmente más grande que el anterior.

Esto da como resultado que las funciones exponenciales se representen esencialmente como líneas rectas. Cuando se trata con este tipo de datos, es difícil concentrarse en los números exponenciales, y puede hacerlo mucho más intuitivo graficando los datos de forma logarítmica.

Usemos Numpy para generar una función exponencial y trazarla linealmente, como hicimos antes:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 10) # [0, 0.55, 1.11, 1.66, 2.22, 2.77, 3.33, 3.88, 4.44, 5]
y = np.exp(x)  # [1, 1.74, 3.03, 5.29, 9.22, 16.08, 28.03, 48.85, 85.15, 148.41]

plt.plot(x, y)
plt.show()

Esto crea una matriz, que tiene una longitud de 10 y contiene valores entre 0..5. Luego usamos la función exp() de Numpy para calcular los valores exponenciales de estos elementos, lo que resultó en una función exponencial en una escala lineal:

plot exponential function in matplotlib

Este tipo de función, aunque simple, es difícil de conceptualizar para los humanos, y los pequeños cambios pueden pasar fácilmente desapercibidos cuando se trata de grandes conjuntos de datos.

Ahora, cambiemos la escala del eje Y a logarítmica:

1
2
3
4
5
6
7
8
9
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 10)
y = np.exp(x)

plt.yscale('log')
plt.plot(x, y)
plt.show()

Usando la instancia de PyPlot, plt, podemos establecer la escala de los ejes X e Y. Aquí, hemos configurado el eje Y en una escala logarítmica, a través de la función yscale().

Aquí, también podríamos haber usado linear, log, logit y symlog. El valor predeterminado es lineal.

Ejecutar este código da como resultado:

line plot on logarithmic scale matplotlib

Personalización de diagramas de líneas en Matplotlib

Puede personalizar fácilmente los diagramas de líneas regulares pasando argumentos a la función plot().

Por lo general, estos serán argumentos como ancho de línea, estilo de línea o color:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np

x = np.random.randint(low=1, high=10, size=25)

plt.plot(x, color = 'blue', linewidth=3, linestyle='dashed')
plt.show()

Esto resulta en:

customizing line plots in matplotlib

En lugar del valor ‘discontinuo’, podríamos haber usado ‘punteado’ o ‘sólido’, por ejemplo. Sin embargo, también podríamos haber usado caracteres especiales como :, -, -- y -.:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np

x = np.random.randint(low=1, high=10, size=25)

plt.plot(x, color = 'blue', linewidth=3, linestyle='-.')
plt.show()

Esto resulta en:

customizing line plots in matplotlib

Hay muchos estilos de línea.

Conclusión

En este tutorial, hemos repasado varias formas de trazar un diagrama de líneas usando Matplotlib y Python. También hemos cubierto cómo trazar en una escala logarítmica, así como también cómo personalizar nuestros gráficos de líneas.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera. a.