¿Cómo dibujar leyendas animadas para subttwigs?

Me gustaría dibujar subttwigs animados con ArtistAnimation. Desafortunadamente, no puedo entender cómo tener una leyenda animada. Probé diferentes métodos que encontré en StackOverflow. Si logro obtener una leyenda, no está animada, sino solo las leyendas de todos los pasos de animación juntos.

Mi código se ve así:

import numpy as np import pylab as pl import matplotlib.animation as anim fig, (ax1, ax2, ax3) = pl.subplots(1,3,figsize=(11,4)) ims = [] im1 = ['im11','im12','im13'] im2 = ['im21','im22','im23'] x = np.arange(0,2*np.pi,0.1) n=50 for i in range(n): for sp in (1,2,3): pl.subplot(1,3,sp) y1 = np.sin(sp*x + i*np.pi/n) y2 = np.cos(sp*x + i*np.pi/n) im1[sp-1], = pl.plot(x,y1) im2[sp-1], = pl.plot(x,y2) pl.xlim([0,2*np.pi]) pl.ylim([-1,1]) lab = 'i='+str(i)+', sp='+str(sp) im1[sp-1].set_label([lab]) pl.legend(loc=2, prop={'size': 6}).draw_frame(False) ims.append([ im1[0],im1[1],im1[2], im2[0],im2[1],im2[2] ]) ani = anim.ArtistAnimation(fig,ims,blit=True) pl.show() 

Así es como se ve el resultado.

Pensé que este código sería equivalente al método utilizado aquí Cómo agregar leyenda / etiqueta en la animación de python, pero obviamente me falta algo.

También intenté establecer las tags como se sugiere en Agregar una leyenda para una animación (de Artistas) en matplotlib, pero realmente no entiendo cómo usarla en mi caso. Me gusta esto

 im2[sp-1].legend(handles='-', labels=[lab]) 

Obtengo un objeto AttributeError: 'Line2D' object has no attribute 'legend' .

[EDIT]: no lo dije claramente: me gustaría tener una leyenda para ambas líneas en las plots.

No sé qué aspecto debe tener exactamente la leyenda, pero me gustaría imaginar que simplemente desea que muestre el valor actual de la línea del fotogtwig actual. Por lo tanto, es mejor que actualice los datos de la línea, en lugar de trazar 150 plots nuevas.

 import numpy as np import pylab as plt import matplotlib.animation as anim fig, axes = plt.subplots(1,3,figsize=(8,3)) ims = [] im1 = [ax.plot([],[], label="label")[0] for ax in axes] im2 = [ax.plot([],[], label="label")[0] for ax in axes] x = np.arange(0,2*np.pi,0.1) legs = [ax.legend(loc=2, prop={'size': 6}) for ax in axes] for ax in axes: ax.set_xlim([0,2*np.pi]) ax.set_ylim([-1,1]) plt.tight_layout() n=50 def update(i): for sp in range(3): y1 = np.sin((sp+1)*x + (i)*np.pi/n) y2 = np.cos((sp+1)*x + (i)*np.pi/n) im1[sp].set_data(x,y1) im2[sp].set_data(x,y2) lab = 'i='+str(i)+', sp='+str(sp+1) legs[sp].texts[0].set_text(lab) legs[sp].texts[1].set_text(lab) return im1 + im2 +legs ani = anim.FuncAnimation(fig,update, frames=n,blit=True) plt.show() 

introduzca la descripción de la imagen aquí