Похоже, что вы попали в ту же ловушку, что и 90% людей, спрашивающих об анимации и matplotlib, в том смысле, что вы неоднократно вызываете plot () на каждом шаге ваших итераций, вместо обновления свойств существующего. .
Общая процедура для анимации заключается в следующем:
- создать свою фигуру и все фиксированные элементы, которые не нужно обновлять
- создать художников, которые нуждаются чтобы обновить и сохранить ссылку на них
- в вашем l oop, обновите (вместо замены или создания новых художников) свойства художников, созданных на предыдущем шаге.
код:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import psutil
N = 50 # number of points to keep
cpu = np.full(shape=(N,), fill_value=np.nan)
fig, ax = plt.subplots()
line, = ax.plot(cpu, 'r-')
ax.set_ylim(0,100)
ax.set_xlim(0,N)
def animate(i):
cpu[:-1] = cpu[1:] # shift values one place to the left
cpu[-1] = psutil.cpu_percent()
line.set_ydata(cpu)
ani = animation.FuncAnimation(fig, animate, interval = 1000)