Введение
В этом практическом занятии вы научитесь создавать простую анимацию вращения трехмерной диаграммы вокруг всех трех осей с использованием Matplotlib. Мы будем использовать примерный набор данных для создания базового рамочного изображения, установки меток осей и вращения осей.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Ноутбук, чтобы получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек и набора данных
Сначала нам нужно импортировать необходимые библиотеки и набор данных. В этом примере мы будем использовать библиотеки matplotlib и mpl_toolkits.mplot3d для создания трехмерной диаграммы, а функцию axes3d.get_test_data() для генерации примера набора данных.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
## Generate sample dataset
X, Y, Z = axes3d.get_test_data(0.05)
Создание трехмерной диаграммы
Далее мы создадим трехмерную диаграмму с использованием функций plt.figure() и fig.add_subplot(). Также мы будем использовать функцию ax.plot_wireframe() для построения набора данных в виде рамочного изображения.
## Create 3D plot
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
## Plot wireframe
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
Установка меток осей
Теперь мы установим метки осей для трехмерной диаграммы с использованием функций ax.set_xlabel(), ax.set_ylabel() и ax.set_zlabel().
## Set axis labels
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
Вращение осей и обновление диаграммы
Наконец, мы будем вращать оси и обновлять диаграмму с использованием цикла for, который проходит полный оборот по углам наклона, азимута, крена и всех вместе. Мы будем использовать функцию ax.view_init() для обновления вида осей и заголовка, а функции plt.title(), plt.draw() и plt.pause() для отображения анимации.
## Rotate the axes and update the plot
for angle in range(0, 360*4 + 1):
## Normalize the angle to the range [-180, 180] for display
angle_norm = (angle + 180) % 360 - 180
## Cycle through a full rotation of elevation, then azimuth, roll, and all
elev = azim = roll = 0
if angle <= 360:
elev = angle_norm
elif angle <= 360*2:
azim = angle_norm
elif angle <= 360*3:
roll = angle_norm
else:
elev = azim = roll = angle_norm
## Update the axis view and title
ax.view_init(elev, azim, roll)
plt.title('Elevation: %d°, Azimuth: %d°, Roll: %d°' % (elev, azim, roll))
## Display animation
plt.draw()
plt.pause(.001)
Резюме
В этом практическом занятии мы узнали, как создавать простую анимацию вращения трехмерной диаграммы вокруг всех трех осей с использованием Matplotlib. Мы использовали пример набора данных для создания базового рамочного изображения, установили метки осей и вращали оси. Мы также узнали, как использовать функции ax.view_init(), plt.title(), plt.draw() и plt.pause() для обновления диаграммы и отображения анимации.