Python

Creación de gráficos animados con Seaborn y Matplotlib

La creación de gráficos animados permite mostrar los cambios de tendencia que se observan a lo largo de tiempo en los conjuntos de datos. Mostrando una gráfica diferente cada poco segundo. Los gráficos de Seaborn se pueden combinar con las funciones de Matplotlib para crear gráficos animados, algo que es posible dado que Seaborn está creada sobre la base de Matplotlib. En esta entrada, se mostrarán cuáles son los pasos para la creación de gráficos animados con Seaborn y Matplotlib.

Importación de las librerías

Para la creación de gráficos animados con Seaborn, biblioteca que normalmente se importa como sns, y Matplotlib, donde normalmente se importa pyplot como plt, es necesario importar ambas librerías y la clase FuncAnimation desde matplotlib.animation. Lo que se puede hacer mediante el siguiente código.

import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

Importación de un conjunto de datos de ejemplo

De cara a facilitar el seguimiento de los ejemplos en esta entrada se usan el conjunto de datos flights que se incluye en la librería Seaborn. Un conjunto de datos que contiene los datos de pasajeros que transporta una compañía aérea a lo largo de años y meses. Para cargar este conjunto de datos solamente se debe importar la biblioteca Seaborn, lo que ya se ha hecho en la sección anterior, y llamar a la función load_dataset() con el nombre de conjunto.

# Cargar el conjunto de datos "flights" de Seaborn
flights = sns.load_dataset("flights")

Creación de gráficos animados con Seaborn y Matplotlib

Una vez importadas las dependencias y los datos se puede crear una gráfica animada con Seaborn y Matplotlib. Para ello es necesario crear primero una función que actualice la gráfica en función de un parámetro. En el conjunto de datos flights se dispone de los datos de pasajeros transportados por mes y año por una aerolínea, con lo que se puede crear una gráfico animado que muestra cómo evoluciona la distribución de pasajeros a lo largo del tiempo.

Una vez creada la función esta se debe inyectar como parámetro en el constructor de la clase FuncAnimation como se muestra en el siguiente ejemplo.

# Función de actualización para animación
def update(frame):
    # Limpiar el gráfico anterior
    plt.cla()
    
    # Filtrar datos hasta el año actual
    year_data = flights[flights["year"] <= frame] 
    
    # Creación del grafio de barras
    sns.barplot(x="month", y="passengers", data=year_data, color="blue", errorbar=None)
    plt.title(f"Vuelos por mes (Hasta {frame})")
    plt.xlabel("Mes")
    plt.ylabel("Pasajeros")

# Crear la figura y la animación
fig = plt.figure(figsize=(10, 6))
animation = FuncAnimation(fig, update, frames=flights["year"].unique(), interval=1000)

animation.save(filename = "flights.gif")

En este código se ha creado en primer lugar la función update() con la cual se borra la gráfica anterior, se seleccionan los datos anteriores al año indicado en el parámetro frame, y se crea una gráfica de barras con Seaborn. Posteriormente se crea una figura y un objeto mediante el constructor FuncAnimation. En el que se indica la figura, la función de actualización, el listado de años en el parámetro frame y el periodo de actualización en milisegundos. Posteriormente se guarda la figura en un archivo. El resultado obtenido se muestra en la siguiente figura.

Evolución del número de pasajeros transportados por mes a lo largo de tiempo en una gráfica animada creada con Seaborn

Conclusiones

La creación de gráficos animados con Seaborn y Matplotlib es una herramienta con la que se puede mostrar cómo evolucionan los datos un conjunto de datos a lo largo del tiempo. Agregando la dimensión temporal a las gráficas. Algo que permite mostrar más información que con una simple gráfica estática.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Seaborn

Recent Posts

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

1 día ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

2 días ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

6 días ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

1 semana ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

2 semanas ago

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

2 semanas ago

This website uses cookies.