Визуализация неструктурированной треугольной сетки

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

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

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

Введение

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

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

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

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

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

Импортируем необходимые библиотеки

Начнем с импорта необходимых библиотек для этого практического занятия, в том числе Matplotlib и NumPy.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.tri as tri

Определяем переменные

Мы определим переменные, которые будем использовать для создания нашего графика. Эти переменные включают количество углов, количество радиусов и минимальный радиус.

n_angles = 48
n_radii = 8
min_radius = 0.25

Создаем сеть и вычисляем x, y, z

Мы создадим сеть в полярных координатах и вычислим x, y, z с использованием определенных переменных.

radii = np.linspace(min_radius, 0.95, n_radii)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
angles[:, 1::2] += np.pi/n_angles

x = (radii*np.cos(angles)).flatten()
y = (radii*np.sin(angles)).flatten()
z = (np.cos(radii)*np.cos(3*angles)).flatten()

Создаем пользовательскую триангуляцию

Мы создадим пользовательскую триангуляцию с использованием координат x и y.

triang = tri.Triangulation(x, y)

Отфильтровываем нежелательные треугольники

Мы отфильтруем нежелательные треугольники с использованием среднего значения координат x и y.

triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),
                         y[triang.triangles].mean(axis=1))
                < min_radius)

Создаем трехмерный контурный график

Мы создадим трехмерный контурный график с использованием созданной триангуляции и координат z. Также настроим угол обзора, чтобы график был легче понять.

ax = plt.figure().add_subplot(projection='3d')
ax.tricontour(triang, z, cmap=plt.cm.CMRmap)
ax.view_init(elev=45.)
plt.show()

Резюме

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