Очистка определенного сюжета в matplotlib.FuncAnimation - PullRequest
0 голосов
/ 04 мая 2020
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
import matplotlib.patches as pat
fig=plt.figure()
ln,=plt.plot([],'o',color='red')
bn,=plt.plot([])
pn,=plt.plot([],marker='o',color='yellow')
ax=plt.axes()

x1=np.linspace(0,2*np.pi,100)
def animate(i):
    ax.cla()
    plt.xlim(-20,20)
    plt.ylim(-20,20)
    c=pat.Circle((0,0),5,facecolor='white',edgecolor="blue")
    ax.add_patch(c)
    x=5*np.cos(i*4*np.pi/100)
    y=5*np.sin(i*4*np.pi/100)
    ln.set_data(x,y)
    bn,=plt.plot((x,10),(y,y))
    y1=5*np.sin(x1+4*np.pi*i/100)
    pn.set_data(x1+10,y1+y)
anim=FuncAnimation(fig,animate,frames=100,interval=20)
plt.show()

Я пытаюсь анимировать волну функции sin, исходящую из точки, вращающейся на окружности, с помощью FuncAnimation, которая требует очистки части графика после каждого вызова функции animate. У меня есть опции, такие как ax.clf (), ax.cla () , которые хороши, но я не хочу очищать весь рис, а только его часть. Есть ли способ просто удалить конкретный линейный объект и сохранить остальную часть фигуры таким же или найти способ удалить объект, просто вызвав его? Я пытался использовать ax.remove () , но он также не работает

...