Una guía práctica para crear tramas animadas usando matplotlib

Estás leyendo la publicación: Una guía práctica para crear tramas animadas usando matplotlib

La visualización de datos ayuda a contar la historia sobre los datos de manera más eficiente y la hace presentable. A veces es difícil explicar la variación en los datos con un gráfico estático, para esto existen bibliotecas de animación. En este artículo, discutiremos una de las bibliotecas de animación que ofrece matplotlib llamada “Animación”. Los siguientes son los temas a tratar.

Tabla de contenido

  1. Breve descripción de Matplotlib
  2. Tramas animadas
    1. Trazado de líneas
    2. Parcela de superficie
    3. Gráfica de regresión

Comencemos con una breve introducción a Matplot.

Breve descripción de Matplotlib

Probablemente la biblioteca de trazado bidimensional de Python más popular en python es Matplolib. La mayoría de las personas comienzan su viaje de análisis exploratorio de datos con Matplotlib. Facilita la creación de diagramas, histogramas, gráficos de barras, diagramas de dispersión, etc. Además de Pandas y Seaborn, se integra a la perfección para crear imágenes aún más sofisticadas. Después de todos estos bienes, hay algunos defectos que son:

  • Matplotlib tiene una API imperativa que a menudo es demasiado detallada.
  • A veces defectos estilísticos pobres.
  • Pobre soporte para web y gráficos interactivos.
  • A menudo lento para datos grandes y complicados.

Comencemos a animar algunos gráficos y observar la visualización.

¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos? echa un vistazo aquí.

Gráficos de línea

Veamos cómo trazar una onda seno y coseno animada usando un gráfico de líneas.

Importar bibliotecas necesarias:

importar matplotlib.animation como anime importar matplotlib.pyplot como plt importar numpy como np importar pandas como pd

🔥 Recomendado:  Proceso de contratación de ciencia de datos en Purplle

Código para la animación:

fig=plt.figura() l, =plt.plot([],[],’k-‘) l2, = plt.plot([], []’m–‘) p1, = plt.plot([], []’ko’) p2, = plt.plot([], []’mo’) plt.xlabel(‘xlabel’) plt.ylabel(‘ylabel’) plt.title(‘título’) plt.xlim(-5, 5) plt.ylim(-5, 5) def func( x): devuelve np.sin(x)*3 def func2(x): devuelve np.cos(x)*3 metadata=dict(title=”Movie”,artist=”sourabh”) escritor= anime.PillowWriter(fps =15,metadatos=metadatos) xlist=[]
ylista=[]
ylista2 = []
listax2 = []
con escritor.ahorro(fig,”sin+cosinewave.gif”,100): para xval en np.linspace(-5,5,100): xlist.append(xval) ylist.append(func(xval)) l.set_data( xlist,ylist) l2.set_data(xlist2,ylist2) p1.set_data(xval,func(xval)) escritor.grab_frame() para xval en np.linspace(-5,5,100): xlist2.append(xval) ylist2.append (func2(xval)) l.set_data(xlist,ylist) l2.set_data(xlist2,ylist2) p2.set_data(xval,func2(xval)) escritor.grab_frame()

En la línea de códigos anterior, inicialmente se crea un gráfico en blanco, luego los límites del eje x y el eje y se establecen entre -5 y 5, creando funciones para la onda seno y coseno. Usé un paquete llamado ‘Pillowwriter’ que ayudará a crear un gif para la trama animada y el resto es crear datos para la función y trazar esos datos. El gif podría almacenarse en sus unidades usando “withwriter.saving(figure,”name of the plot.gif”,dpi for the gif)”.

En este gráfico, la línea en negrita es la onda sinusoidal y la línea punteada es la onda coseno.

Parcela de superficie

Un gráfico de superficie muestra la relación tridimensional en dos dimensiones, con las variables en los ejes x e y, y la variable de respuesta (z) representada por una superficie suave. Generalmente se utiliza cuando se estudia el ajuste del modelo con dos o más características continuas.

Importar bibliotecas:

importar matplotlib desde matplotlib importar cm importar matplotlib.animation como anime importar matplotlib.pyplot como plt importar numpy como np importar pandas como pd

Código para la animación:

np.random.seed(29680801) fig, ax = plt.subplots(subplot_kw=dict(projection=’3d’)) plt.xlim(-5, 5) plt.ylim(-5, 5) metadata=dict(título =”Película”,artista=”sourabh”) escritor= anime.PillowWriter(fps=15,metadata=metadata) def func(x,y,r,t): return np.cos(r/2+t)*np .exp(-np.square(r)/50) xdata = np.linspace(-10, 10, 1000) ydata = np.linspace(-10, 10, 1000) x_list, y_list = np.meshgrid(xdata, ydata ) r_list = np.sqrt( np.square(x_list) + np.square(y_list) ) withwriter.saving(fig, “exp3d.gif”, 100): for t in np.linspace(0,20,160): z = func(x_list,y_list,rlist, t) ax.set_zlim(-1, 1) ax.plot_surface(x_list,y_list,z,cmap=cm.viridis) escritor.grab_frame() plt.cla()

🔥 Recomendado:  Los 10 mejores proveedores de proxy de LinkedIn para scrapers y bots en 2023

En cuanto a la creación de un gráfico tridimensional, necesitamos x, y y z, por lo que para el valor z creó una función que calculará el valor en función de los valores del eje x, el eje y y la raíz cuadrada de ellos. .

Gráfica de regresión

np.random.seed(23680545) metadata=dict(title=”Película”,artista=”sourabh”) escritor= anime.PillowWriter(fps=15,metadata=metadata) fig = plt.figure() plt.xlim(- 8, 8) plt.ylim(-8, 8) def func(x): return x*1.2 + 0.1 + np.random.normal(0,2, x.shape) x = np.random.uniform(-7 ,7,10) x = np.sort(x) y = func(x) coef = np.polyfit(x,y,1) print(coef) xline = np.linspace(-6,6,40) yline = np.polyval(coef, xline) lPnt, = plt.plot(x, y, ‘o’) l, = plt.plot(xline, yline, ‘k-‘, linewidth=3) plt.show() fig = plt.figura() plt.xlim(-10, 10) plt.ylim(-10, 10) lPnt, = plt.plot([], []’o’) l, = plt.plot([], []’k-‘, ancho de línea=3) x_List = []
y_Lista = []

x_punto = []
y_pnt = []

con escritor.ahorro(fig, “fitPlot.gif”, 100): para xval,yval en zip(x,y): x_pnt.append(xval) y_pnt.append(yval) lPnt.set_data(x_pnt,y_pnt) l. set_data(x_List,y_List) escritor.grab_frame() escritor.grab_frame() para x_val,y_val en zip(xline,xline): x_List.append(x_val) y_List.append(y_val) lPnt.set_data(x_pnt,y_pnt) l. set_data(x_List,y_List) escritor.grab_frame() for i in range(10): escritor.grab_frame()

En este gráfico, ayudamos a comprender la explicación del ajuste de la línea de aprendizaje de regresión de forma más dinámica.

Ultimas palabras

Matplotlib podría ser la biblioteca más antigua para la visualización de datos o puede llamarlo el abuelo de la visualización de datos, pero es una herramienta poderosa para visualizar los datos de manera dinámica y eficiente. Con una implementación práctica de este concepto en este artículo, podríamos entender cómo animar una trama bidimensional.

Referencias