¿Cómo animar la función drawgreatcircle de matplotlib?

He creado un pequeño progtwig que toma una ciudad de la NHL y luego dibuja el camino que recorre el equipo a lo largo de su temporada.

El gráfico resultante es desordenado:

Gráfico desordenado

Así que tuve la idea de que sería interesante si animara las rutas de vuelo, algo así como mirar una película de Indiana Jones, donde la línea crece de un punto a otro.

Según entiendo otras muestras de matplotlib, entiendo que la función de animación toma una función, calcula su salida y luego actualiza el gráfico. No veo cómo esto sería posible con drawgreatcircle ya que cada vez que lo llamo me dan una línea completa.

¿Alguna idea de cómo puedo abordar esto?

Aquí hay una imagen de muestra del código de muestra a continuación

Imagen de muestra

 import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap fig = plt.figure(figsize=(10, 10)) m = Basemap(projection='merc', resolution=None, llcrnrlon=-125, llcrnrlat=25, # LL = lower left urcrnrlon=-60, urcrnrlat=55) #UR = upper right m.etopo(scale=0.5, alpha=0.5) # Ottawa to Anaheim # Ottawa lat1 = 45.4215 lon1 = -75.6972 # Anaheim lat2 = 33.8353 lon2 = -117.9145 m.drawgreatcircle(lon1,lat1,lon2,lat2) 

drawgreatcicle devuelve matplotlib line2D desde la cual se pueden obtener los datos usando get_data . Así que la idea sería dibujar el gran círculo, obtener los datos y luego borrarlos. Usando los datos, uno puede realizar una animación, iterando sobre la matriz.

 import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap import matplotlib.animation fig = plt.figure(figsize=(6, 4)) m = Basemap(projection='merc', resolution=None, llcrnrlon=-125, llcrnrlat=25, # LL = lower left urcrnrlon=-60, urcrnrlat=55) #UR = upper right m.etopo(scale=0.5, alpha=0.5) # Ottawa to Anaheim # Ottawa lat1 = 45.4215 lon1 = -75.6972 # Anaheim lat2 = 33.8353 lon2 = -117.9145 line, = m.drawgreatcircle(lon1,lat1,lon2,lat2) x,y = line.get_data() line.remove() del line line, = plt.plot([],[]) def update(i): line.set_data(x[:i], y[:i]) ani = matplotlib.animation.FuncAnimation(fig, update, frames=len(x), interval=100) ani.save(__file__+".gif", writer="imagemgick", fps=10) plt.tight_layout() plt.show() 

introduzca la descripción de la imagen aquí