Dificultad para animar un gráfico matplotlib con moviepy

Tengo que hacer una animación de un gran número (~ 90,000) figuras. Para el contexto, es un diagrama de un mapa para todos los días desde 1700 hasta 1950, con eventos de interés marcados en los días relevantes. Puedo hacer esto usandomatplotlib.animation.FuncAnimation, y tengo un código que hace esto con éxito durante un pequeño período de prueba. Sin embargo, con el conjunto completo de figuras, esto lleva una cantidad de tiempo poco práctica para renderizar y dará como resultado un archivo de película muy grande. He leído eso aparentementemoviepy Ofrece ventajas de velocidad y tamaño de archivo. Sin embargo, tengo problemas para hacer que esto funcione; creo que mi problema es que no he entendido cómo configurar correctamente elduration yfps argumentos

Una versión simplificada de mi código es:

import numpy as np
import matplotlib.pyplot as plt
from moviepy.video.io.bindings import mplfig_to_npimage
import moviepy.editor as mpy

fig = plt.figure()
ax = plt.axes()
x = np.random.randn(10,1)
y = np.random.randn(10,1)
p = plt.plot(x,y,'ko')

time = np.arange(2341973,2342373)

def animate(i):
   xn = x+np.sin(2*np.pi*time[i]/10.0)
   yn = y+np.cos(2*np.pi*time[i]/8.0)
   p[0].set_data(xn,yn)
   return mplfig_to_npimage(fig)

fps = 1 
duration = len(time)
animation = mpy.VideoClip(animate, duration=duration)
animation.write_videofile("test.mp4", fps=fps)

Sin embargo, esto no produce el resultado previsto de producir una película con un cuadro para cada elemento detime y guardar esto en un .mp4. No puedo ver dónde me he equivocado, agradecería cualquier ayuda o sugerencias.

Mis mejores deseos, Luke

Respuestas a la pregunta(2)

Su respuesta a la pregunta