the-bridge-logo.svg
6392ea96c80bd5d63d5f39b8_animaciones-en-python.png
12/12/2022  - Data Science

Cómo crear animaciones en Python

La animación se ha convertido en una de las claves del diseño, gracias  a las animaciones en Phyton conseguiremos mostrar más información de un modo mucho más atractivo.  ¿Quieres saber cómo? ¡Te lo contamos!¿Cómo funcionan las animaciones en Python?Una de las primeras cosas que debemos tener claras a la hora de comenzar a crear animaciones en Python es que debemos preparar muy bien los datos, aunque eso te lo explicaremos más adelante.Comenzaremos usando la función FuncAnimation dentro de matplolib. Hay que tener en cuenta que este paquete no crea animaciones por sí mismo, sino que se limita a generarlas a partir de una serie de gráficos que nosotros hayamos incluido. Para ello, incluiremos el valor de entrada con un número determinado de frame para que nos devuelva el gráfico correspondiente a dicho frame.Cómo estructurar los datos para crear animaciones en PythonLa manera más simple de graficar los datos es que estén en formato tidy:
  1. Una variable por columna.
  2. Cada observación de dicha variable a su vez, debe estar en una fila diferente.
Una vez conocemos la manera de colocar los datos, vamos a ver cómo es el proceso de creación de las animaciones en Python.Cómo crear animaciones en PythonCrear una animación es simple, sobre todo si ya tienes experiencia a la hora de  crear gráficos con matplotlib. Para comenzar, debemos empezar por crear:
  • fig: El objeto que usaremos para dibujar nuestro gráfico.
  • func: La función que se encargará de devolver el estado de la animación para cada frame. 
  • interval: Se trata del delay en milisegundos entre los frames de la animación.
  • frames: Llamamos frames a los números de imágenes en las que basaremos el gráfico.
Para no complicarse demasiado la vida, lo más recomendable es crear el gráfico que queremos y, a partir de ahí, generar la animación.Cómo elaborar una animación de líneasLo ideal es crear una animación generando un gráfico similar a lo que pretendemos animar. Una vez listo el gráfico, para crear una animación de líneas, solo tendremos que añadir una función para cada iteración con los datos que tengamos disponibles.Teniendo el gráfico, es más sencillo crear esta iteración, ya que solo habrá que  usar los índices para establecer los datos que el gráfico debe recoger.Una vez creado todo lo necesario para nuestra animación, el siguiente paso será nombrarla mediante la función FuncAnimation.¡Y listo!Cómo crear una animación de barchart en PythonLo primero que tendremos que hacer es filtrar los datos dentro de la propia función de iteración.  El primer paso será graficar lo que queremos llegar a conseguir. Paso 1. Limpiar el gráfico anteriorSi vamos a crear el gráfico dentro de nuestro objeto ax, los gráficos se irán acumulando, lo que puede provocar que nuestros datos acaben por no ser reales. Si además no usamos transparencia en el gráfico, en función del tipo de gráfico, es probable que ni nos demos cuenta.Para poder evitarlo, habrá que llamar a ax.clear(), para que limpie el resultado procedente del frame anterior.Paso 2. Filtrar datos en la función de update
  1. Elaborar una lista con todos los estados posibles de la animación
  2. Filtrar el dataset completo según el estado dentro de la propia función de update.
Es importante filtrar los datos dentro de la propia función de update para que todo sea mucho más sencillo.Animación de barchart, ¡lista!Cómo mejorar la fluidez de las animaciones de PythonPara que una animación de Python sea mucho más fluida, tendremos que crear más datos entre cada uno de los estados que tenemos. Así lograremos:
  1. Contar con datos intermedios, para que el salto de las animaciones no sea tan grande.
  2. Contar con muchos más frames, así, con la misma duración de la animación, con un mayor número de frames por segundo, conseguiremos que se vea mucho más fluida.
Para conseguirlo:
  1. Crear más observaciones entre los datos que ya tenemos. Dichas observaciones estarán vacías.
  2. Imputar datos a esas nuevas observaciones vacías a través de la interpolación entre los estados.
Dicho así puede parecer bastante complicado, pero tranquilo,  es mucho más sencillo de lo que parece:Generar más observaciones entre los datos con los que ya contamosSolo tendremos que partir de un índice que vaya de 0 al número de observaciones que tengamos. Podemos conseguirlo a través del método reset_index.A partir de aquí, solo tendremos que cambiar el índice actual de los datos multiplicando cada índice por el número de frames entre estados que queramos generar. Si queremos crear 20 frames, al multiplicar el índice antiguo por 20, el índice 2 pasará a tener el índice 20 y entre medias se habrán creado muchas variables vacías.Para que esto funcione habrá que tener los datos en el formato adecuado:
  • Cada fila debe ser un estado.
  • Cada columna debe ser la observación que vayamos a graficar.
  • El valor debe ser la variable que vayamos a graficar.
Evitar saltos en las animacionesUno de los problemas más comunes en las animaciones, son los saltos entre frames. Se producen cuando los ejes del gráfico cambian, pareciendo que el contenido es diferente aunque en realidad, no lo es.Solventar este problema es fácil. Fijaremos el valor máximo de los ejes X e Y para cada frame. De esa manera, dicho valor será el máximo que alcanzará el gráfico en toda la serie. Crear animaciones en Python nos permite generar gráficos muy visuales que alcanzarán un mayor impacto. ¿Quieres conocer más sobre este tema? Anímate a comenzar en este sector formándote en el bootcamp de Data Science de The Bridge. ¡Te estamos esperando!
Sigue leyendo. Artículos especializados en diferentes áreasEcha un vistazo al resto de artículos que tenemos en nuestro blog. Trabajamos duro para crear contenido de calidad y enriquecer la comunidad.
    ¿Te has quedado con ganas de saber más?No lo dudes y contacta con nosotros, te resolveremos todas las dudas y te asesoraremos para que encuentres el bootcamp, la modalidad y el plan de financiación que mejor se adapta a ti.
    SOLICITA INFORMACIÓN