Очистка определенного участка в matplotlib.FuncAnimation

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, которая требует очистки части сюжета после каждого вызова функции анимации. У меня есть такие опции, как ax.clf(),ax.cla(), которые хороши, но я не хочу очищать весь фиг, а только его часть. Есть ли способ просто удалить конкретный линейный объект и сохранить остальную часть рисунка такой же или найти способ удалить объект, просто вызвав его. Я пробовал использовать ax.remove(), но он тоже не работает

0 ответов

Другие вопросы по тегам