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