¿Cómo resaltar un rango de tiempo en un gráfico de serie temporal en Python con Matplotlib?

Una gráfica de serie temporal es una gráfica que contiene datos que se miden durante un período de tiempo, por ejemplo, el producto interno bruto de un país, la población mundial y muchos otros datos.

A veces queremos resaltar un período específico de la línea de tiempo para que sea más fácil para el observador leer datos específicos. Podemos resaltar un rango de tiempo en el gráfico de serie de tiempo usando pyplot.axvspan() en el módulo matplotlib .

Sintaxis:

matplotlib.pyplot.axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs)

Parámetros: 

  • xmin: Número que indica la posición inicial del rectángulo vertical en el eje X.
  • xmin: Número que indica la posición final del rectángulo vertical en el eje X.
  • ymin: posición inicial del rectángulo vertical en el eje y, tomará valores entre 0 y 1, siendo 0 la parte inferior del eje, 1 la parte superior del eje
  • ymax: posición final del rectángulo vertical en el eje y, tomará valores entre 0 y 1, siendo 0 la parte inferior del eje, 1 la parte superior del eje.
  • **kwargs: Otros parámetros opcionales para cambiar las propiedades del rectángulo, como cambiar el color, etc.

A continuación se muestran algunos ejemplos que muestran cómo resaltar un rango de tiempo en un gráfico de serie de tiempo:

Ejemplo 1 :

Supongamos que tenemos un país y queremos dibujar un gráfico de su producto interno bruto en un lapso de muchos años. En primer lugar, tenemos que preparar nuestros datos para que podamos trazar un gráfico. En el eje Y, tomaremos el PIB, que serán números enteros aleatorios de 5 a 10. En el eje X, tomaremos un período de tiempo de 1900 a 2020.

Tomaremos el PIB de un país y lo resaltaremos durante un cierto período de tiempo.

Python3

# import required modules
import random
import matplotlib.pyplot as plt
 
# create dataset
year = [i for i in range(1900,2021)]
GDP = []
for i in range(121):
    GDP.append(random.randint(5,10))
     
# display dataset   
print("Length of year list is: " + str(len(year)))
print("Length of GDP list is: " + str(len(GDP)))
print("First 10 elements of respective list are: ")
print(year[:10])
print(GDP[:10])

Producción:

Ahora trazaremos un gráfico del PIB vs año. Hemos escalado el eje Y en consecuencia.

Python3

# depict time series
fig, ax = plt.subplots(figsize=(5,5))
ymin, ymax = plt. ylim()
ax.plot(year,GDP)
plt.ylim(ymin * 50, ymax * 50)
 
# adjust label
ax.set_ylabel("GDP")
 
# assign title
ax.set_title("GDP of country over years" ,size=15)
plt.show()

Producción:

gráfico de PIB vs año

La palabra clave subplot devuelve la figura, es decir, el gráfico y la array de ejes (almacenados en ax ) que usaremos para resaltar el gráfico.

Usaremos el método axvspan() que agrega un tramo vertical (rectángulo) a lo largo de los ejes en un rango dado, y luego podemos cambiar el color del rectángulo y luego reducir su opacidad para que parezca que lo hemos resaltado.

NOTA: Recuerde reducir la opacidad; de lo contrario, aparecerá como un rectángulo de color sólido en el gráfico. El  argumento alfa que se usa con **kwargs se usa para reducir la opacidad.

Python3

# depict illustration
fig, ax = plt.subplots(figsize=(5, 5))
ymin, ymax = plt. ylim()
ax.plot(year, GDP)
plt.ylim(ymin * 50, ymax * 50)
 
# adjust labels
ax.set_ylabel("GDP")
 
# assign title
ax.set_title("GDP of country over years", size=15)
 
# highlight a time range
ax.axvspan(1990, 2010, color="blue", alpha=0.3)
plt.show()

gráfico resaltado de PIB vs año

Ejemplo 2 :

Aquí hay otro programa donde resaltaremos el eje x para un diagrama de dispersión.

Python3

# importing libraries
import matplotlib.pyplot as plt
import random
 
# creating the dataset
date = [i for i in range(2000, 2021)]
value = []
for i in range(21):
    value.append(random.randint(5, 15))
 
# Create a figure and a set of subplots
fig, ax = plt.subplots(figsize=(10, 6))
 
# Creating the scatter plot
ax.scatter(date, value)
 
# Highlighting for a certain period of time
ax.axvspan(2002, 2005, alpha=0.3, color="green")
plt.show()

resaltando sobre un gráfico de dispersión

Ejemplo 3

A continuación se muestra otro ejemplo en el que destacamos un rango de tiempo de 2005 a 2010

Python3

# import required modules
import random
import matplotlib.pyplot as plt
 
# create dataset
x = [int(i) for i in range(2000,2020)]
y = [i for i in range(20)]
 
# depict illustration
fig, ax = plt.subplots(figsize=(10, 10))
ymin, ymax = plt. ylim()
ax.plot(x, y)
 
# highlight a time range
ax.axvspan(2005, 2010, color="green", alpha=0.6)
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por hg070401 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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