Анимация трехмерной диаграммы в Matplotlib

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы научитесь создавать простую анимацию вращения трехмерной диаграммы вокруг всех трех осей с использованием 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() для обновления диаграммы и отображения анимации.