Введение
В этом практическом занятии мы научимся анимировать трехмерный линейный график с помощью Matplotlib, популярной библиотеки визуализации данных в Python.
Советы по работе с ВМ
После запуска виртуальной машины кликните в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортировать библиотеки
Первым шагом является импорт необходимых библиотек: Matplotlib, NumPy и time.
import time
import matplotlib.pyplot as plt
import numpy as np
Настроить фигуру и подграфик
Вторым шагом является настройка фигуры и подграфика. Мы создадим трехмерный график с использованием add_subplot.
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
Создать сетку
Третий шаг - создать сетку с использованием linspace.
xs = np.linspace(-1, 1, 50)
ys = np.linspace(-1, 1, 50)
X, Y = np.meshgrid(xs, ys)
Установить пределы оси z
Четвёртым шагом является установка пределов оси z, чтобы они не пересчитывались каждый кадр.
ax.set_zlim(-1, 1)
Анимировать график
Пятым шагом является анимация графика. Мы будем использовать цикл for для перебора диапазона значений для phi. В каждой итерации мы удалим предыдущую коллекцию линий, сгенерируем новые данные, построим новый виртуальный фрейм (wireframe) и поставим короткую паузу перед продолжением.
wframe = None
tstart = time.time()
for phi in np.linspace(0, 180. / np.pi, 100):
if wframe:
wframe.remove()
Z = np.cos(2 * np.pi * X + phi) * (1 - np.hypot(X, Y))
wframe = ax.plot_wireframe(X, Y, Z, rstride=2, cstride=2)
plt.pause(.001)
Показать среднюю частоту кадров в секунду (FPS)
Шестым шагом является показ средней частоты кадров в секунду (FPS) с использованием общего времени, которое потребовалось для запуска анимации.
print('Average FPS: %f' % (100 / (time.time() - tstart)))
Резюме
В этом практическом занятии мы узнали, как анимировать трехмерный виртуальный фрейм (wireframe) с использованием Matplotlib. Мы использовали цикл for для перебора диапазона значений для phi, генерировали новые данные, строили новый виртуальный фрейм и ставили короткую паузу перед продолжением. Наконец, мы показали среднюю частоту кадров в секунду (FPS) с использованием общего времени, которое потребовалось для запуска анимации.