Animación usando matplotlib con subplots y ArtistAnimation

Estoy trabajando en un análisis de imágenes y quiero crear una animación de los resultados finales que incluya la secuencia de tiempo de los datos 2D y una gráfica de las secuencias de tiempo en un solo píxel, de manera que la gráfica 1D se actualice a medida que avanza la animación 2D. Luego, configúrelos en una subplot de lado a lado. El enlace de abajo tiene una imagen del resultado final que idealmente se animaría.

introduzca la descripción de la imagen aquí

Sigo recibiendo un error: AttributeError: el objeto ‘list’ no tiene el atributo ‘set_visible’. Lo busqué en Google (como lo haces tú) y me encontré con http://matplotlib.1069221.n5.nabble.com/Matplotlib-1-1-0-animation-vs-contour-plots-td18703.html donde un chico patea el Código para establecer el atributo set_visible. Desafortunadamente, el comando plot no parece tener tal atributo, por lo que no sé cómo puedo producir la animación. He incluido el parche de mono en el siguiente ejemplo de funcionamiento mínimo (comentado), así como un segundo ‘im2’ que también está comentado, lo que debería funcionar para cualquiera que intente ejecutar el código. Obviamente te dará dos animaciones de ttwig 2D. Ejemplo de trabajo mínimo es el siguiente:

#!/usr/bin/env python import matplotlib.pyplot as plt import matplotlib.animation as anim import numpy as np import types #create image with format (time,x,y) image = np.random.rand(10,10,10) image2 = np.random.rand(10,10,10) #setup figure fig = plt.figure() ax1=fig.add_subplot(1,2,1) ax2=fig.add_subplot(1,2,2) #set up list of images for animation ims=[] for time in xrange(np.shape(image)[1]): im = ax1.imshow(image[time,:,:]) # im2 = ax2.imshow(image2[time,:,:]) im2 = ax2.plot(image[0:time,5,5]) # def setvisible(self,vis): # for c in self.collections: c.set_visible(vis) # im2.set_visible = types.MethodType(setvisible,im2,None) # im2.axes = plt.gca() ims.append([im, im2]) #run animation ani = anim.ArtistAnimation(fig,ims, interval=50,blit=False) plt.show() 

También sentí curiosidad por saber si alguien sabía de una manera interesante de resaltar el píxel del que se extraen los datos 1D, o incluso dibujar una línea desde el píxel hasta el argumento secundario más a la derecha para que estén “conectados” de alguna manera.

Adrián

plot devuelve una lista de artistas (de ahí que el error se refiera a una lista). Esto es para que puedas llamar a plot como lines = plot(x1, y1, x2, y2,...) .

Cambio

  im2 = ax2.plot(image[0:time,5,5]) 

a

  im2, = ax2.plot(image[0:time,5,5]) 

Al agregar la coma, se im2 la longitud una lista en im2

En cuanto a su segunda pregunta, tratamos de tener solo una pregunta por hilo en SO, así que por favor abra una nueva pregunta.