Трехмерная поверхностная диаграмма куба

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

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

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

Введение

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

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

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

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

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

Определить размеры

Определите размеры куба, создав три переменные для длины каждой стороны: Nx, Ny и Nz. Затем создайте три сетки для X, Y и Z с использованием метода arange из библиотеки numpy. Наконец, задайте отрицательное значение для Z, чтобы создать куб, а не плоскость.

import matplotlib.pyplot as plt
import numpy as np

## Define dimensions
Nx, Ny, Nz = 100, 300, 500
X, Y, Z = np.meshgrid(np.arange(Nx), np.arange(Ny), -np.arange(Nz))

Создать поддельные данные

Создайте поддельные данные для построения, используя формулу для вычисления данных на основе значений X, Y и Z. Мы добавим единицу к результату, чтобы гарантировать, что минимальное значение будет больше нуля.

## Create fake data
data = (((X+100)**2 + (Y-20)**2 + 2*Z)/1000+1)

Построить контурные поверхности

Постройте контурные поверхности для куба с использованием метода contourf для каждой поверхности. Используйте соответствующие параметры для zdir и offset.

kw = {
    'vmin': data.min(),
    'vmax': data.max(),
    'levels': np.linspace(data.min(), data.max(), 10),
}

## Create a figure with 3D ax
fig = plt.figure(figsize=(5, 4))
ax = fig.add_subplot(111, projection='3d')

## Plot contour surfaces
_ = ax.contourf(
    X[:, :, 0], Y[:, :, 0], data[:, :, 0],
    zdir='z', offset=0, **kw
)
_ = ax.contourf(
    X[0, :, :], data[0, :, :], Z[0, :, :],
    zdir='y', offset=0, **kw
)
C = ax.contourf(
    data[:, -1, :], Y[:, -1, :], Z[:, -1, :],
    zdir='x', offset=X.max(), **kw
)

Установить пределы графика

Установите пределы графика с использованием метода set и передав пределы координат X, Y и Z.

## Set limits of the plot from coord limits
xmin, xmax = X.min(), X.max()
ymin, ymax = Y.min(), Y.max()
zmin, zmax = Z.min(), Z.max()
ax.set(xlim=[xmin, xmax], ylim=[ymin, ymax], zlim=[zmin, zmax])

Построить края

Постройте края с использованием метода plot. Мы построим три линии вдоль координат X и Y, и одну линию вдоль координат X и Z.

## Plot edges
edges_kw = dict(color='0.4', linewidth=1, zorder=1e3)
ax.plot([xmax, xmax], [ymin, ymax], 0, **edges_kw)
ax.plot([xmin, xmax], [ymin, ymin], 0, **edges_kw)
ax.plot([xmax, xmax], [ymin, ymin], [zmin, zmax], **edges_kw)

Установить метки и деления по оси Z

Установите метки и деления по оси Z с использованием метода set. Мы установим метки для координат X, Y и Z, и установим деления по оси Z, чтобы показать глубину куба.

## Set labels and zticks
ax.set(
    xlabel='X [км]',
    ylabel='Y [км]',
    zlabel='Z [м]',
    zticks=[0, -150, -300, -450],
)

Установить зум и угол обзора

Установите зум и угол обзора с использованием методов view_init и set_box_aspect. Мы установим угол обзора в 40 градусов по направлению X и -30 градусов по направлению Y, а зум - 0,9.

## Set zoom and angle view
ax.view_init(40, -30, 0)
ax.set_box_aspect(None, zoom=0.9)

Добавить цветовую шкалу

Добавьте цветовую шкалу с использованием метода colorbar. Мы установим параметры fraction и pad, чтобы настроить расположение цветовой шкалы, и установим метку, чтобы показать название и единицы измерения данных.

## Colorbar
fig.colorbar(C, ax=ax, fraction=0.02, pad=0.1, label='Название [единицы]')

Резюме

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