Я бы хотел построить точечную синусоидальную волну в Python через Matplotlib, для которой каждая точка добавляется каждые x миллисекунд, чтобы получить плавную анимацию чертежа.
Это моя попытка:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from math import sin
fig, ax = plt.subplots()
x = [0]
line, = ax.plot(x, np.asarray(0))
def animate(i):
x.append(x[-1]+0.04)
line.set_xdata(np.asarray(x)*2*np.pi/5)
line.set_ydata(np.sin(np.asarray(x)*2*np.pi/5))
plt.draw()
def init():
line.set_ydata(np.ma.array(x, mask=True))
return line,
ani = animation.FuncAnimation(fig, animate, 10, init_func=init, interval=40, blit=True)
plt.show()
Что поднимает:
RuntimeError: The animation function must return a sequence of Artist objects.
Что я ошибся?Какой, по вашему мнению, наиболее эффективный способ получить этот эффект?
PS Ось времени должна оставаться фиксированной и не двигаться, поэтому она должна быть шире графика