Анимация рисования круга - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь понять, как работает Matplotlib.animation, рисуя простой круг, но я не понимаю, что я делаю неправильно

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(-10,10),ylim=(-10,10))
line, = ax.plot([], [],)
def init():
    line.set_data([], [])
    return line,
def animate(i):
    x = 3*np.sin(np.radians(i))
    y = 3*np.cos(np.radians(i))
    line.set_data(x, y)
    return line,
anim = animation.FuncAnimation(fig, animate, init_func=init,      frames=360, interval=20, blit=True)
plt.show()

Это ничего не рисует, и я не знаю почему.

1 Ответ

0 голосов
/ 24 мая 2019

x и y должны быть массивами значений для построения линии.

Вы, кажется, создаете одиночные плавающие объекты в своей функции анимации.

Если вы пытаетесь показать, что круг постепенно появляется, один из способов сделать это - создать массив значений X и Y в начале, возможно, явно из массива значений радиан, что-то вроде этого:

rads = np.arange(0, 2*np.pi, 0.01)
x = 3*np.sin(rads)
y = 3*np.cos(rads)

Затем в animate вы назначаете только часть массивов x и y для данных строки.

line.set_data(x[0:i], y[0:i])

Количество шагов для полного круга больше не будет 360, оно будет 2Pi / 0,01.

Вы можете изменить размер интервала или изменить количество кадров анимации, чтобы настроить это.

...