Типы проекций трехмерных графиков

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

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

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

Введение

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