#python #matplotlib #jupyter-notebook
Вопрос:
Я пытаюсь анимировать результаты моделирования, выполненного с помощью Python. Для этого я использую matplotlib для создания кадров анимации, а затем собираю их с помощью класса Camera из библиотеки celluloid. Код, который генерирует анимацию, выглядит следующим образом:
fig = plt.figure()
ax = plt.gca()
ax.set_aspect('equal')
camera = Camera(fig)
for i in range(result.t.size):
if i % 10 == 0:
x = result.y[0, i]
y = result.y[1, i]
plt.scatter(x, y, s = 100, c = 'red')
plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.grid()
camera.snap()
animation = camera.animate(blit = False, interval = 10)
HTML(animation.to_html5_video())
Последняя часть, которая генерирует видео HTML5, позволяет просматривать анимацию в ноутбуке Jupyter в Интернете. Тем не менее, я получаю следующий результат:
Первый вывод-это соответствующая анимация, которая работает хорошо. Второй — это просто статичный пустой участок. Поэтому у меня есть два вопроса:
- Откуда берется второй сюжет и как я могу его удалить?
- Анимация не показывает никакой сетки, хотя я запрашивал ее
plt.grid()
на каждом кадре. Почему это происходит?
Заранее спасибо за любую помощь.
Комментарии:
1. И, пожалуйста, ознакомьтесь matplotlib.org/stable/api/animation_api.html чтобы правильно настроить фигуру.
2.
plt.scatter(x, y, s = 100, c = 'red')
наверное, так и должно бытьax.scatter(x, y, s = 100, c = 'red')
. Вы создаете фигуру и оси, а затем никогда не используете их.