Введение
В этом практическом занятии демонстрируются различные проекции камеры для трехмерных графиков и эффекты изменения фокусного расстояния для перспективной проекции с использованием Python Matplotlib.
Советы по работе с ВМ
После запуска виртуальной машины щелкните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортировать библиотеки
Сначала импортируем необходимые библиотеки, в том числе Matplotlib и Axes3D из mpl_toolkits.mplot3d.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
Получить данные
Получите тестовые данные для трехмерной диаграммы.
X, Y, Z = axes3d.get_test_data(0.05)
Создать фигуру с подграфиками
Создайте фигуру с тремя подграфиками с использованием plt.subplots.
fig, axs = plt.subplots(1, 3, subplot_kw={'projection': '3d'})
Построить график данных
Постройте данные на каждом из трех подграфиков с использованием plot_wireframe.
for ax in axs:
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
Установить ортографическую проекцию
Установите первый подграфик для использования ортографической проекции с углом обзора (FOV) 0 градусов и бесконечной длиной фокуса (focal_length).
axs[0].set_proj_type('ortho') ## FOV = 0 deg
axs[0].set_title("'ortho'\nfocal_length = ∞", fontsize=10)
Установить перспективные проекции
Установите второй подграфик для использования перспективной проекции с стандартным углом обзора (FOV) 90 градусов и длиной фокуса (focal_length) 1.
axs[1].set_proj_type('persp') ## FOV = 90 deg
axs[1].set_title("'persp'\nfocal_length = 1 (default)", fontsize=10)
Установите третий подграфик для использования перспективной проекции с углом обзора (FOV) 157.4 градуса и длиной фокуса (focal_length) 0.2.
axs[2].set_proj_type('persp', focal_length=0.2) ## FOV = 157.4 deg
axs[2].set_title("'persp'\nfocal_length = 0.2", fontsize=10)
Показать график
Показать график с использованием plt.show().
plt.show()
Резюме
В этом практическом занятии показано, как создавать трехмерный график с использованием Python Matplotlib и как изменять тип проекции и длину фокуса графика. Ортографическая проекция сглаживает изображение, в то время как перспективная проекция усиливает перспективу и дает изображению более явную глубину. Стандартная длина фокуса 1 соответствует углу обзора (FOV) 90 градусов.