Автор оригинала: Pankaj Kumar.
С помощью анимации на Python мы можем более эффективно выражать ваши данные. Анимация-это метод, при котором фигурами манипулируют, чтобы они выглядели как движущиеся изображения, имитация движения, создаваемая серией изображений, является анимацией.
В этой статье мы будем использовать библиотеку целлулоидов, которая делает анимацию в Python Matplotlib очень простой.
Целлулоид – Простая анимация на Python
Для начинающих уроки анимации matplotlib могут оказаться сложными. Целлулоид позволяет легко создавать анимацию с помощью matplotlib.
С помощью целлулоида мы делаем “фотографии” нашей визуализации, чтобы создать кадр на каждой итерации. Как только все кадры будут захвачены, мы сможем создать
Вы можете установить библиотеку целлулоидов в Python с помощью команды Python pip
pip install celluloid
Шаги по созданию анимации с использованием целлулоида
Шаги по созданию анимации с использованием целлулоида
1. Импортируйте класс камеры из целлулоида
Во-первых, нам нужно импортировать класс Camera из модуля celluloid и создать объект camera, передав объект Matplotlib figure.
from celluloid import Camera fig = plt.figure() camera = Camera(fig)
2. Создавайте моментальные снимки во время циклического перебора данных
Циклическое построение данных на фигуре Matplotlib постепенно и создание снимка с помощью метода .snap( )
объекта камеры.
#plotting data using loops and creating snapshot at each iteration plt.plot(..) camera.snap()
3. Создайте объект анимации
Использование метода .animate( )
класса camera после создания всех кадров.
#Applying the animate method to create animations animation = camera.animate() #Saving the animation animation.save('my_animation.mp4')
Пример реализации анимации в Python
Теперь давайте четко разберемся в описанных выше шагах, создав анимацию в Python для трассировки синусоидальной функции.
#Importing required libraries %matplotlib notebook import matplotlib.pyplot as plt import numpy as np from celluloid import Camera import ffmpeg #Creating Data x = np.linspace(0, 10, 100) #defining a function to return sine of input values. def fun(i): y = np.sin(i) return y x_y = fun(x) #Creating matplotlib figure and camera object fig = plt.figure() plt.xlim(0,10) plt.ylim(-2,2) camera = Camera(fig) #Looping the data and capturing frame at each iteration for i in x: plt.plot(x,x_y , color = 'green' , lw = 0.8) f = plt.scatter(i, fun(i) , color = 'red' , s = 200) plt.title('tracing a sin function') camera.snap() #Creating the animation from captured frames animation = camera.animate(interval = 200, repeat = True, repeat_delay = 500)
В приведенном выше коде мы определили функцию fun (), которая принимает числовые значения и возвращает синус этого входного значения.
Поскольку у нас есть готовый объект камеры, мы перебираем данные, с каждой итерацией мы передаем новые координаты трассировщика (точка красного цвета) и создаем привязку выходного изображения.
После захвата всех кадров мы применяем метод .animate( )
со следующими входными аргументами:
интервал
– время между двумя кадрами в миллисекундах.repeat
– ( Bool ) укажите, хотим ли мы продолжать повторять анимацию.repeat_delay
– если значение repeat равно True, то с помощью этого параметра мы указываем временную задержку для повторения анимации.
#Saving the animation animation.save('sine_wave.mp4')
Некоторые ограничения использования этой библиотеки:
- Убедитесь, что границы осей одинаковы для всех участков.
- Передайте художников в функцию
legend
, чтобы нарисовать их отдельно, так как легенды будут накапливаться из предыдущих сюжетов.
Вывод
в этой статье мы обнаружили очень простой метод создания анимации на Python с использованием библиотеки целлулоидов. Поиграйте с библиотекой, чтобы лучше изучить ее и стать более эффективным с ней! Счастливого Обучения !! 🙂