Las animaciones son una excelente manera de hacer que las visualizaciones sean más atractivas y atractivas para el usuario. Nos ayuda a demostrar la visualización de datos de una manera significativa. Python nos ayuda a crear una Visualización de Animación utilizando las potentes bibliotecas de Python existentes. Matplotlib es una biblioteca de visualización de datos muy popular y se usa comúnmente para la representación gráfica de datos y también para animaciones que usan funciones incorporadas.
Hay dos formas de crear animaciones usando Matplotlib:
- Usando la función de pausa()
- Usando la función FuncAnimation()
Método 1: Usar la función de pausa()
La función pause() en el módulo pyplot de la biblioteca matplotlib se usa para pausar los segundos de intervalo mencionados en el argumento. Considere el siguiente ejemplo en el que crearemos un gráfico lineal simple usando matplotlib y mostraremos Animación en él:
- Cree 2 arrays, X e Y, y almacene valores del 1 al 100.
- Trazar X e Y usando la función plot().
- Agregue la función de pausa() con un intervalo de tiempo adecuado
- Ejecuta el programa y verás la animación.
Python
from matplotlib import pyplot as plt x = [] y = [] for i in range(100): x.append(i) y.append(i) # Mention x and y limits to define their range plt.xlim(0, 100) plt.ylim(0, 100) # Ploting graph plt.plot(x, y, color = 'green') plt.pause(0.01) plt.show()
Producción :
De manera similar, puede usar la función de pausa() para crear animaciones en varios gráficos.
Método 2: Usar la función FuncAnimation()
Esta función FuncAnimation() no crea la animación por sí sola, sino que crea la animación a partir de una serie de gráficos que pasamos.
Sintaxis: FuncAnimation(figure, animation_function, frames=Ninguno, init_func=Ninguno, fargs=Ninguno, save_count=Ninguno, *, cache_frame_data=True, **kwargs)
Ahora hay Múltiples tipos de Animación que puedes hacer usando la función FuncAnimation:
Animación de gráfico lineal:
En este ejemplo, estamos creando un gráfico lineal simple que mostrará una animación de una línea. De manera similar, usando FuncAnimation, podemos crear muchos tipos de representaciones visuales animadas. Solo necesitamos definir nuestra animación en una función y luego pasarla a FuncAnimation con los parámetros adecuados.
Python
from matplotlib import pyplot as plt from matplotlib.animation import FuncAnimation import numpy as np x = [] y = [] figure, ax = plt.subplots() # Setting limits for x and y axis ax.set_xlim(0, 100) ax.set_ylim(0, 12) # Since plotting a single graph line, = ax.plot(0, 0) def animation_function(i): x.append(i * 15) y.append(i) line.set_xdata(x) line.set_ydata(y) return line, animation = FuncAnimation(figure, func = animation_function, frames = np.arange(0, 10, 0.1), interval = 10) plt.show()
Producción:
Animación de carrera de gráficos de barras en Python
En este ejemplo, estamos creando una animación de gráfico de barras simple que mostrará una animación de cada barra.
Python
from matplotlib import pyplot as plt from matplotlib.animation import FuncAnimation, writers import numpy as np fig = plt.figure(figsize = (7,5)) axes = fig.add_subplot(1,1,1) axes.set_ylim(0, 300) palette = ['blue', 'red', 'green', 'darkorange', 'maroon', 'black'] y1, y2, y3, y4, y5, y6 = [], [], [], [], [], [] def animation_function(i): y1 = i y2 = 5 * i y3 = 3 * i y4 = 2 * i y5 = 6 * i y6 = 3 * i plt.xlabel("Country") plt.ylabel("GDP of Country") plt.bar(["India", "China", "Germany", "USA", "Canada", "UK"], [y1, y2, y3, y4, y5, y6], color = palette) plt.title("Bar Chart Animation") animation = FuncAnimation(fig, animation_function, interval = 50) plt.show()
Producción:
Animación de diagrama de dispersión en Python:
En este ejemplo, animaremos el diagrama de dispersión en python usando la función aleatoria . Estaremos iterando a través de animation_func y mientras iteramos trazaremos valores aleatorios de los ejes x e y.
Python
from matplotlib import pyplot as plt from matplotlib.animation import FuncAnimation import random import numpy as np x = [] y = [] colors = [] fig = plt.figure(figsize=(7,5)) def animation_func(i): x.append(random.randint(0,100)) y.append(random.randint(0,100)) colors.append(np.random.rand(1)) area = random.randint(0,30) * random.randint(0,30) plt.xlim(0,100) plt.ylim(0,100) plt.scatter(x, y, c = colors, s = area, alpha = 0.5) animation = FuncAnimation(fig, animation_func, interval = 100) plt.show()
Producción:
Movimiento horizontal en carrera de gráfico de barras:
- Aquí trazaremos una carrera de gráfico de barras utilizando la población más alta en un conjunto de datos de la ciudad.
- Las diferentes ciudades tendrán una barra diferente y la carrera del gráfico de barras se repetirá desde el año 1990 hasta 2018.
- Seleccionamos países de los cuales se seleccionarían las ciudades más importantes del conjunto de datos con la población más alta.
El conjunto de datos se puede descargar desde aquí: city_populations
Python
import pandas as pd import matplotlib.pyplot as plt import matplotlib.ticker as ticker from matplotlib.animation import FuncAnimation df = pd.read_csv('city_populations.csv', usecols=['name', 'group', 'year', 'value']) colors = dict(zip(['India','Europe','Asia', 'Latin America','Middle East', 'North America','Africa'], ['#adb0ff', '#ffb3ff', '#90d595', '#e48381', '#aafbff', '#f7bb5f', '#eafb50'])) group_lk = df.set_index('name')['group'].to_dict() def draw_barchart(year): dff = df[df['year'].eq(year)].sort_values(by='value', ascending=True).tail(10) ax.clear() ax.barh(dff['name'], dff['value'], color=[colors[group_lk[x]] for x in dff['name']]) dx = dff['value'].max() / 200 for i, (value, name) in enumerate(zip(dff['value'], dff['name'])): ax.text(value-dx, i, name, size=14, weight=600, ha='right', va='bottom') ax.text(value-dx, i-.25, group_lk[name], size=10, color='#444444', ha='right', va='baseline') ax.text(value+dx, i, f'{value:,.0f}', size=14, ha='left', va='center') # polished styles ax.text(1, 0.4, year, transform=ax.transAxes, color='#777777', size=46, ha='right', weight=800) ax.text(0, 1.06, 'Population (thousands)', transform=ax.transAxes, size=12, color='#777777') ax.xaxis.set_major_formatter(ticker.StrMethodFormatter('{x:,.0f}')) ax.xaxis.set_ticks_position('top') ax.tick_params(axis='x', colors='#777777', labelsize=12) ax.set_yticks([]) ax.margins(0, 0.01) ax.grid(which='major', axis='x', linestyle='-') ax.set_axisbelow(True) ax.text(0, 1.12, 'The most populous cities in the world from 1500 to 2018', transform=ax.transAxes, size=24, weight=600, ha='left') ax.text(1, 0, 'by @pratapvardhan; credit @jburnmurdoch', transform=ax.transAxes, ha='right', color='#777777', bbox=dict(facecolor='white', alpha=0.8, edgecolor='white')) plt.box(False) plt.show() fig, ax = plt.subplots(figsize=(15, 8)) animator = FuncAnimation(fig, draw_barchart, frames = range(1990, 2019)) plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por vaibhavpatel1904 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA