Matplotlib: dibujar líneas verticales en el gráfico

En este tutorial, veremos cómo dibujar líneas verticales en un diagrama/eje de Matplotlib, en Python, usando vlines() y axvline(), con ejemplos prácticos.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Gran parte de la popularidad de Matplotlib proviene de sus opciones de personalización: puede modificar casi cualquier elemento de su jerarquía de objetos.

En este tutorial, veremos cómo dibujar una línea vertical en un gráfico de Matplotlib, que nos permite marcar y resaltar ciertas regiones del gráfico, sin hacer zoom ni [cambiar el rango del eje](/ como-establecer-el-rango-del-eje-xlim-ylim-en-matplotlib/).

Creando una Parcela

Primero creemos una gráfica simple con algunos datos aleatorios:

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

fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

plt.show()

Aquí, hemos usado Numpy para generar 150 puntos de datos aleatorios, en un rango de [0, 1).

matplotlib plot random values

Ahora, dado que hemos establecido una semilla, podemos replicar esta imagen aleatoria tantas veces como queramos. Por ejemplo, dibujemos líneas verticales en las marcas 20 y 100.

Hay dos formas de dibujar líneas, utilizando las funciones vlines() o axvline() de la instancia de PyPlot. Naturalmente, también puede llamar a estos métodos en el objeto Axes.

Dibujar líneas verticales en Matplotlib Trazar con PyPlot.vlines()

Empecemos con la función vlines():

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

fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.vlines([20, 100], 0, 1, linestyles='dashed', colors='red')

plt.show()

La función vlines() acepta algunos argumentos: una matriz escalar o 1D de valores X en los que le gustaría dibujar líneas. Hemos proporcionado [20, 100], marcando dos puntos, aunque puedes pasar de 0...n puntos aquí. Luego, los argumentos ymin y ymax - estos son la altura de las líneas. Los hemos configurado para que sean de 0 a 1, ya que esa es la distribución de la llamada np.random.rand() también. Luego, puede establecer estilos, como linestyles o colors, que aceptan las opciones de estilo típicas de Matplotlib.

Ejecutar este código dará como resultado:

add vertical lines to matplotlib plot with vlines()

Tenemos dos líneas verticales, que están discontinuas, en color rojo, en los puntos ‘20’ y ‘100’ en el eje X.

Esta función nos permite establecer ymin e ymax en valores concretos, mientras que axvline() nos permite elegir la altura en forma de porcentaje, o simplemente dejamos que se trace de abajo hacia arriba de forma predeterminada.

Esta característica es útil cuando desea acortar o alargar las líneas, por ejemplo. Cambiemos el rango de nuestro eje Y, para incluir la vista de -10 a 10, en lugar de 0 y 1. Nuestros datos aleatorios seguirán estando en el rango de [0, 1), por lo que los veremos mejor desde una perspectiva diferente:

1
2
3
4
5
6
7
8
fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.set_ylim(-10, 10)
ax.vlines([20, 100], -2, 2, linestyles='dashed', colors='red')

change axis range and plot vertical lines on matplotlib plot

Aquí, hemos configurado las líneas para que sean más largas que el rango de los datos aleatorios en sí, pero aún mucho más pequeñas que el tamaño de los ‘Ejes’ en sí.

Dibujar líneas verticales en Matplotlib Parcela con PyPlot.axvline()

Ahora, echemos un vistazo a la función axvline():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.set_ylim(-10, 10)
ax.axvline(20, color='red')
ax.axvline(100, color='red')

plt.show()

Tiene algunas limitaciones que la otra función no tiene, como poder trazar solo un punto a la vez. Si queremos graficar en múltiples puntos, como 20 y 100, tendremos que llamar a la función dos veces.

Tampoco nos permite especificar el estilo de línea como vlines(), sin embargo, no requiere los argumentos ymin y ymax por defecto. Si los omite, como hemos hecho nosotros, simplemente estarán desde la parte superior hasta la parte inferior de los ‘Ejes’:

draw vertical line on matplotlib plot axvline

Sin embargo, puede cambiar la altura si lo desea; esta vez, sin embargo, cambiará la altura en términos de porcentajes. Estos porcentajes tienen en cuenta la parte superior e inferior de los ‘Ejes’, por lo que el 0 % estará en la parte inferior, mientras que el 100 % estará en la parte superior. Dibujemos una línea que abarque del 50% al 80%:

1
2
3
4
5
6
7
8
9
fig, ax = plt.subplots(figsize=(12, 6))

np.random.seed(42)
x = np.random.rand(150)
ax.plot(x)

ax.set_ylim(-10, 10)
ax.axvline(20, 0.8, 0.5, color='red')
ax.axvline(100, 0.8, 0.5, color='red')

Esto produce:

set percentage height of vertical plot on matplotlib axvline

Conclusión

En este tutorial, hemos repasado cómo dibujar líneas verticales en un diagrama de Matplotlib.

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.