Usando NetworkX con matplotlib.ArtistAnimation

Lo que quiero hacer es crear una animación en la que los nodos de un gráfico cambien de color con el tiempo. Cuando busco información sobre animación en matplotlib, generalmente veo ejemplos que se parecen a esto:

#!/usr/bin/python

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation

fig = plt.figure(figsize=(8,8))
images = []
for i in range(10):
  data = np.random.random(100).reshape(10,10)
  imgplot = plt.imshow(data)
  images.append([imgplot])
anim = ArtistAnimation(fig, images, interval=50, blit=True)
anim.save('this-one-works.mp4')
plt.show()

Así que pensé que podía hacer algo como esto:

#!/usr/bin/python

import numpy as np
import networkx as nx
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation

G = nx.Graph()
G.add_edges_from([(0,1),(1,2),(2,0)])
fig = plt.figure(figsize=(8,8))
pos=nx.graphviz_layout(G)
images = []
for i in range(10):
  nc = np.random.random(3)
  imgplot = nx.draw(G,pos,with_labels=False,node_color=nc) # this doesn't work
  images.append([imgplot])
anim = ArtistAnimation(fig, images, interval=50, blit=True)
anim.save('not-this-one.mp4')
plt.show()

En lo que estoy atascado es cómo, después de dibujar el gráfico con nx.draw (), puedo obtener un objeto del tipo apropiado para colocarlo en la matriz que se pasa a ArtistAnimation. En el primer ejemplo, plt.imshow () devuelve un objeto de tipo matplot.image.AxesImage, pero nx.draw () en realidad no devuelve nada. ¿Hay alguna manera de que pueda obtener un objeto de imagen adecuado?

Los enfoques completamente diferentes son bienvenidos, por supuesto (parece que siempre hay muchas formas diferentes de hacer lo mismo en matplotlib), siempre que pueda guardar mi animación como mp4 cuando termine.

¡Gracias!

--craig

Respuestas a la pregunta(1)

Su respuesta a la pregunta