Построение трехмерной поверхности с использованием Matplotlib

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

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

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

Введение

Этот практикум представляет собой пошаговое руководство по построению трехмерной поверхности с использованием Matplotlib в Python. Тримерная поверхность окрашена в соответствии с цветовой картой coolwarm и делается непрозрачной с использованием параметра "antialiased=False". Практикум также демонстрирует использование .LinearLocator и настройки пользовательного форматирования для меток делений оси z.

Советы по работе с ВМ

После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике с использованием Jupyter Notebook.

Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cm
from matplotlib.ticker import LinearLocator

Мы импортируем необходимые библиотеки для практикума. Matplotlib - это библиотека для построения графиков в Python, которая предоставляет интерфейс, похожий на MATLAB. Numpy - это фундаментальная библиотека для научных вычислений в Python.

Создание фигуры и осей

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})

Мы создаем фигуру и оси с параметром subplot_kw, установленным на "projection": "3d". Это создаст трехмерную проекцию графика.

Создание данных

X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

Мы создаем данные для графика. Мы создаем массивы значений X и Y с равномерно распределенными значениями от -5 до 5 с шагом 0.25. Затем мы создаем сетку (meshgrid) значений X и Y с использованием np.meshgrid(). Мы используем эту сетку для вычисления значений R, которые представляют расстояние от начала координат. Затем мы вычисляем значения Z с использованием функции sin() от R.

Построение поверхности

surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

Мы строим поверхность с использованием функции plot_surface(). Мы передаем значения X, Y и Z, а также параметр cmap, установленный на cm.coolwarm, чтобы окрасить поверхность в соответствии с цветовой картой coolwarm. Мы также устанавливаем linewidth=0, чтобы убрать виртуальную решетку, и antialiased=False, чтобы сделать поверхность непрозрачной.

Настройка оси z

ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
## A StrMethodFormatter is used automatically
ax.zaxis.set_major_formatter('{x:.02f}')

Мы настраиваем ось z с использованием функции set_zlim() для установки пределов оси z в диапазоне от -1.01 до 1.01. Затем мы используем функцию set_major_locator() для установки количества делений на оси z в 10 с использованием LinearLocator(10). Наконец, мы используем функцию set_major_formatter() для форматирования меток делений оси z с использованием StrMethodFormatter.

Добавление цветовой шкалы

fig.colorbar(surf, shrink=0.5, aspect=5)

Мы добавляем цветовую шкалу к графику с использованием функции colorbar(). Мы передаем объект surf и задаем shrink=0.5 и aspect=5, чтобы настроить размер цветовой шкалы.

Резюме

В этом руководстве показано, как построить трехмерную поверхность с использованием Matplotlib в Python. Мы создали фигуру и оси, создали данные, построили поверхность, настроили ось z и добавили цветовую шкалу. Matplotlib - это мощный инструмент для создания визуализаций в Python.