Spec-Zone.ru › Matplotlib

matplotlib.tri

Функции для неструктурированных треугольных сеток.

classmatplotlib.tri.Triangulation(x, y, triangles=None, mask=None)[исходный код]

Неструктурированная треугольная сетка, состоящая из npoints точек и ntri треугольников. Треугольники можно задать вручную или автоматически сгенерировать с помощью триангуляции Делоне.

Параметры:
x, y(npoints,) array-like

Координаты узлов сетки.

triangles(ntri, 3) array-like of int, optional

Для каждого треугольника — индексы трёх составляющих его точек, упорядоченные против часовой стрелки. Если параметр не задан, вычисляется триангуляция Делоне.

mask(ntri,) array-like of bool, optional

Какие треугольники маскируются.

Атрибуты:
triangles(ntri, 3) array of int

Для каждого треугольника — индексы трёх составляющих его точек, упорядоченные против часовой стрелки. Чтобы учесть mask, используйте get_masked_triangles.

mask(ntri, 3) array of bool or None

Замаскированные треугольники.

is_delaunaybool

Указывает, является ли триангуляция вычисленной триангуляцией Делоне (когда параметр triangles не был задан).

Примечания

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

calculate_plane_coefficients(z)[исходный код]

Вычисляет коэффициенты уравнения плоскости для всех незамаскированных треугольников по координатам точек (x, y) и заданному массиву z формы (npoints). Возвращаемый массив имеет форму (npoints, 3) и позволяет вычислить значение z в положении (x, y) внутри треугольника tri с помощью z = array[tri, 0] * x  + array[tri, 1] * y + array[tri, 2].

propertyedges

Возвращает целочисленный массив формы (nedges, 2), содержащий все рёбра незамаскированных треугольников.

Каждая строка задаёт ребро индексами начальной и конечной точек. Каждое ребро встречается только один раз: для ребра между точками i и j будет указано только (i, j) или (j, i).

get_cpp_triangulation()[исходный код]

Возвращает базовый объект C++ Triangulation, создавая его при необходимости.

staticget_from_args_and_kwargs(*args, **kwargs)[исходный код]

Возвращает объект Triangulation, созданный из args и kwargs, а также оставшиеся args и kwargs после удаления использованных значений.

Есть два варианта: либо первый аргумент — объект Triangulation, который в этом случае возвращается без изменений, либо аргументов args и kwargs достаточно для создания нового объекта Triangulation. Во втором случае список возможных аргументов args и kwargs см. в документации Triangulation.__init__.

get_masked_triangles()[исходный код]

Возвращает массив треугольников с учётом маски.

get_trifinder()[исходный код]

Возвращает используемый по умолчанию объект matplotlib.tri.TriFinder для этой триангуляции, создавая его при необходимости. Это позволяет легко использовать один объект TriFinder совместно.

propertyneighbors

Возвращает целочисленный массив формы (ntri, 3), содержащий соседние треугольники.

Для каждого треугольника указаны индексы трёх треугольников, имеющих с ним общие рёбра, или -1, если соседнего треугольника нет. neighbors[i, j] — это треугольник, соседний с ребром от точки с индексом triangles[i, j] до точки с индексом triangles[i, (j+1)%3].

set_mask(mask)[исходный код]

Задаёт или сбрасывает массив маски.

Параметры:
maskNone or bool array of length ntri
classmatplotlib.tri.TriContourSet(ax, *args, **kwargs)[исходный код]

Базовые классы: ContourSet

Создаёт и хранит набор изолиний или закрашенных областей для треугольной сетки.

Обычно пользователь не создаёт экземпляр этого класса напрямую: это делают tricontour и tricontourf.

Атрибуты:
levelsarray

Значения уровней изолиний.

layersarray

Для линейных контуров совпадает с levels; для закрашенных контуров — значения посередине между уровнями. См. ContourSet._process_colors.

Рисует изолинии треугольной сетки или закрашенные области в зависимости от того, равен ли именованный аргумент filled значению False (по умолчанию) или True.

Первым аргументом инициализатора должен быть объект Axes. Описание остальных аргументов и именованных аргументов приведено в документации tricontour.

set(*, agg_filter=<UNSET>, alpha=<UNSET>, animated=<UNSET>, antialiased=<UNSET>, array=<UNSET>, capstyle=<UNSET>, clim=<UNSET>, clip_box=<UNSET>, clip_on=<UNSET>, clip_path=<UNSET>, cmap=<UNSET>, color=<UNSET>, edgecolor=<UNSET>, facecolor=<UNSET>, gid=<UNSET>, hatch=<UNSET>, hatch_linewidth=<UNSET>, in_layout=<UNSET>, joinstyle=<UNSET>, label=<UNSET>, linestyle=<UNSET>, linewidth=<UNSET>, mouseover=<UNSET>, norm=<UNSET>, offset_transform=<UNSET>, offsets=<UNSET>, path_effects=<UNSET>, paths=<UNSET>, picker=<UNSET>, pickradius=<UNSET>, rasterized=<UNSET>, sketch_params=<UNSET>, snap=<UNSET>, transform=<UNSET>, url=<UNSET>, urls=<UNSET>, visible=<UNSET>, zorder=<UNSET>)[исходный код]

Задаёт несколько свойств одновременно.

Поддерживаются следующие свойства:

Свойство

Описание

agg_filter

функция фильтра, принимающая массив чисел с плавающей запятой формы (m, n, 3) и значение dpi и возвращающая массив формы (m, n, 3) и два смещения от левого нижнего угла изображения

alpha

array-like или float или None

animated

bool

antialiased или aa или antialiaseds

bool или список значений bool

array

array-like или None

capstyle

CapStyle или {'butt', 'projecting', 'round'}

clim

(vmin: float, vmax: float)

clip_box

BboxBase или None

clip_on

bool

clip_path

Patch или (Path, Transform) или None

cmap

Colormap или str или None

color

цвет или список кортежей RGBA

edgecolor или ec или edgecolors

цвет или список цветов или 'face'

facecolor или facecolors или fc

цвет или список цветов

figure

Figure или SubFigure

gid

str

hatch

{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}

hatch_linewidth

неизвестно

in_layout

bool

joinstyle

JoinStyle или {'miter', 'round', 'bevel'}

label

object

linestyle или dashes или linestyles или ls

str, кортеж или список таких значений

linewidth или linewidths или lw

float или список значений float

mouseover

bool

norm

Normalize или str или None

offset_transform или transOffset

Transform

offsets

array-like формы (N, 2) или (2,)

path_effects

список объектов AbstractPathEffect

paths

неизвестно

picker

None, bool, float или callable

pickradius

float

rasterized

bool

sketch_params

(scale: float, length: float, randomness: float)

snap

bool или None

transform

Transform

url

str

urls

список значений str или None

visible

bool

zorder

float

classmatplotlib.tri.TriFinder(triangulation)[исходный код]

Абстрактный базовый класс для классов, используемых для определения треугольников триангуляции, внутри которых находятся точки (x, y).

Вместо создания экземпляра класса, производного от TriFinder, обычно лучше использовать функцию Triangulation.get_trifinder.

Производные классы реализуют __call__(x, y), где x и y — array-like координаты точек одинаковой формы.

classmatplotlib.tri.TrapezoidMapTriFinder(triangulation)[исходный код]

Базовые классы: TriFinder

Класс TriFinder, реализованный с использованием алгоритма карты трапеций из книги «Computational Geometry, Algorithms and Applications», второе издание, авторы M. de Berg, M. van Kreveld, M. Overmars и O. Schwarzkopf.

Триангуляция должна быть корректной: в ней не должно быть повторяющихся точек, треугольников, образованных коллинеарными точками, или пересекающихся треугольников. Алгоритм допускает некоторую погрешность для треугольников, образованных коллинеарными точками, но полагаться на это не следует.

classmatplotlib.tri.TriInterpolator(triangulation, z, trifinder=None)[исходный код]

Абстрактный базовый класс для классов, используемых для интерполяции на треугольной сетке.

Производные классы реализуют следующие методы:

  • __call__(x, y), где x, y — массивоподобные координаты точек одинаковой формы, а результатом является маскированный массив той же формы, содержащий интерполированные значения z.
  • gradient(x, y), где x, y — массивоподобные координаты точек одинаковой формы, а результатом является список из 2 маскированных массивов той же формы, содержащих 2 производные интерполятора (производные интерполированных значений z по x и y).
classmatplotlib.tri.LinearTriInterpolator(triangulation, z, trifinder=None)[исходный код]

Базовые классы: TriInterpolator

Линейный интерполятор на треугольной сетке.

Каждый треугольник представляется плоскостью, поэтому интерполированное значение в точке (x, y) лежит на плоскости треугольника, содержащего (x, y). Таким образом, интерполированные значения непрерывны на всей триангуляции, но их первые производные разрывны на рёбрах между треугольниками.

Параметры:
triangulationTriangulation

Триангуляция, по которой выполняется интерполяция.

z(npoints,) array-like

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

trifinderTriFinder, необязательный

Если параметр не указан, будет использоваться TriFinder по умолчанию для Triangulation, полученный вызовом Triangulation.get_trifinder.

Методы

`__call__` (x, y)

(Возвращает интерполированные значения в точках (x, y).)

`gradient` (x, y)

(Возвращает интерполированные производные в точках (x, y).)

gradient(x, y)[исходный код]

Возвращает список из 2 маскированных массивов с интерполированными производными в указанных точках (x, y).

Параметры:
x, yarray-like

Координаты x и y одинаковой формы и произвольного числа измерений.

Возвращает:
dzdx, dzdynp.ma.array

2 маскированных массива той же формы, что и x и y; значения, соответствующие точкам (x, y) вне триангуляции, маскируются. Первый возвращаемый массив содержит значения \(\frac{\partial z}{\partial x}\), а второй — значения \(\frac{\partial z}{\partial y}\).

classmatplotlib.tri.CubicTriInterpolator(triangulation, z, kind='min_E', trifinder=None, dz=None)[исходный код]

Базовые классы: TriInterpolator

Кубический интерполятор на треугольной сетке.

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

CubicTriInterpolator получает заданные пользователем значения функции в каждом узле и вычисляет значения производных, обеспечивая плавную интерполяцию. (В качестве особой возможности пользователь может также задать значения производных в каждом узле, однако обычно так не делают.)

Параметры:
triangulationTriangulation

Триангуляция, по которой выполняется интерполяция.

z(npoints,) array-like

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

kind{'min_E', 'geom', 'user'}, необязательный

Выбор алгоритма сглаживания для вычисления производных интерполянта (по умолчанию — 'min_E'):

  • если 'min_E': (по умолчанию) производные в каждом узле вычисляются так, чтобы минимизировать энергию изгиба.
  • если 'geom': производные в каждом узле вычисляются как взвешенное среднее соответствующих нормалей треугольников. Используется для оптимизации скорости на больших сетках.
  • если 'user': пользователь передаёт аргумент dz, поэтому вычисления не требуются.
trifinderTriFinder, необязательный

Если параметр не указан, будет использоваться TriFinder по умолчанию для Triangulation, полученный вызовом Triangulation.get_trifinder.

dzкортеж массивоподобных объектов (dzdx, dzdy), необязательный

Используется только при kind ='user'. В этом случае необходимо передать dz в виде (dzdx, dzdy), где dzdx и dzdy — массивы той же формы, что и z, содержащие первые производные интерполянта в точках triangulation.

Методы

`__call__` (x, y)

(Возвращает интерполированные значения в точках (x, y).)

`gradient` (x, y)

(Возвращает интерполированные производные в точках (x, y).)

Примечания

Это примечание носит технический характер и подробно описывает вычисление кубической интерполяции.

Интерполяция основана на схеме разбиения Клафа—Точера для сетки triangulation (для наглядности каждый треугольник сетки делится на 3 дочерних треугольника, и в каждом из них интерполированная функция является кубическим полиномом двух координат). Этот метод возник в анализе методом конечных элементов (FEM); используется редуцированный элемент Хсиэ—Клафа—Точера (HCT). Его функции формы описаны в [1]. Собранная функция гарантированно является C1-гладкой, то есть непрерывна, а её первые производные также непрерывны (это легко показать внутри треугольников, но это также верно при пересечении рёбер).

В случае по умолчанию (kind ='min_E') интерполянт минимизирует энергию кривизны в функциональном пространстве, порождённом функциями формы элемента HCT, при заданных значениях и произвольных производных в каждом узле. Минимизируемый функционал — интеграл так называемой полной кривизны (реализация основана на алгоритме из [2] — разреженный решатель PCG):

\[E(z) = \frac{1}{2} \int_{\Omega} \left( \left( \frac{\partial^2{z}}{\partial{x}^2} \right)^2 + \left( \frac{\partial^2{z}}{\partial{y}^2} \right)^2 + 2\left( \frac{\partial^2{z}}{\partial{y}\partial{x}} \right)^2 \right) dx\,dy\]

Если пользователь выбирает вариант kind ='geom', применяется простое геометрическое приближение (взвешенное среднее векторов нормалей треугольников), которое может повысить скорость работы на очень больших сетках.

Ссылки

[1]

Michel Bernadou, Kamal Hassan, «Базисные функции для полных и редуцированных треугольников Хсиэ—Клафа—Точера общего вида». International Journal for Numerical Methods in Engineering, 17(5):784–789. 2.01.

[2]

C.T. Kelley, «Итерационные методы оптимизации».

gradient(x, y)[исходный код]

Возвращает список из 2 маскированных массивов с интерполированными производными в указанных точках (x, y).

Параметры:
x, yarray-like

Координаты x и y одинаковой формы и произвольного числа измерений.

Возвращает:
dzdx, dzdynp.ma.array

2 маскированных массива той же формы, что и x и y; значения, соответствующие точкам (x, y) вне триангуляции, маскируются. Первый возвращаемый массив содержит значения \(\frac{\partial z}{\partial x}\), а второй — значения \(\frac{\partial z}{\partial y}\).

classmatplotlib.tri.TriRefiner(triangulation)[исходный код]

Абстрактный базовый класс для классов, реализующих уточнение сетки.

TriRefiner инкапсулирует объект Triangulation и предоставляет средства для уточнения сетки и интерполяции.

Производные классы должны реализовать:

  • refine_triangulation(return_tri_index=False, **kwargs) , где необязательные именованные аргументы kwargs определяются в каждой конкретной реализации TriRefiner; метод возвращает:

    • уточнённую триангуляцию;
    • необязательно (в зависимости от return_tri_index) индекс исходного треугольника триангуляции, которому принадлежит каждая точка уточнённой триангуляции.
  • refine_field(z, triinterpolator=None, **kwargs), где:

    • массив z содержит значения поля (для уточнения), заданные в узлах базовой триангуляции;
    • triinterpolator — необязательный TriInterpolator;
    • остальные необязательные именованные аргументы kwargs определяются в каждой конкретной реализации TriRefiner;

    метод возвращает кортеж с уточнённой треугольной сеткой и интерполированными значениями поля в узлах уточнённой триангуляции.

classmatplotlib.tri.UniformTriRefiner(triangulation)[исходный код]

Базовые классы: TriRefiner

Равномерное уточнение сетки путём рекурсивного разбиения.

Параметры:
triangulationTriangulation

Инкапсулированная триангуляция (подлежащая уточнению)

refine_field(z, triinterpolator=None, subdiv=3)[исходный код]

Уточняет поле, заданное на инкапсулированной триангуляции.

Параметры:
z(npoints,) array-like

Значения поля для уточнения, заданные в узлах инкапсулированной триангуляции. (n_points — число точек в исходной триангуляции.)

triinterpolatorTriInterpolator, необязательный

Интерполятор, используемый для интерполяции поля. Если не указан, будет использоваться CubicTriInterpolator.

subdivint, по умолчанию: 3

Уровень рекурсии при разбиении. Каждый треугольник делится на 4**subdiv дочерних треугольника.

Возвращает:
refi_triTriangulation

Возвращаемая уточнённая триангуляция.

refi_zодномерный массив длины: число узлов refi_tri.

Возвращаемое интерполированное поле (в узлах refi_tri).

refine_triangulation(return_tri_index=False, subdiv=3)[исходный код]

Вычисляет равномерно уточнённую триангуляцию refi_triangulation для инкапсулированной triangulation.

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

Параметры:
return_tri_indexbool, по умолчанию: False

Определяет, возвращается ли таблица индексов, указывающая индекс исходного треугольника для каждой точки.

subdivint, по умолчанию: 3

Уровень рекурсии при разбиении. Каждый треугольник делится на 4**subdiv дочерних треугольника; поэтому значение по умолчанию даёт 64 уточнённых подмногоугольника для каждого треугольника исходной триангуляции.

Возвращает:
refi_triangulationTriangulation

Уточнённая триангуляция.

found_indexмассив целых чисел

Индекс треугольника исходной триангуляции, содержащего каждую точку refi_triangulation. Возвращается только если return_tri_index имеет значение True.

classmatplotlib.tri.TriAnalyzer(triangulation)[исходный код]

Предоставляет базовые средства для анализа и улучшения треугольной сетки.

TriAnalyzer инкапсулирует объект Triangulation и предоставляет базовые средства для анализа и улучшения сетки.

Параметры:
triangulationTriangulation

Инкапсулированная триангуляция для анализа.

Атрибуты:
scale_factors

Коэффициенты масштабирования триангуляции до единичного квадрата.

circle_ratios(rescale=True)[исходный код]

Возвращает меру уплощённости треугольников триангуляции.

Отношение радиуса вписанной окружности к радиусу описанной окружности широко используется в качестве показателя уплощённости треугольника. Оно всегда <= 0.5 и == 0.5 только для равносторонних треугольников. Значения отношения окружностей ниже 0.01 указывают на очень плоские треугольники.

Чтобы избежать чрезмерно низких значений из-за разницы масштабов по двум осям, треугольную сетку можно предварительно масштабировать так, чтобы она помещалась в единичный квадрат, используя scale_factors (только если rescale равно True, что является значением по умолчанию).

Параметры:
rescalebool, по умолчанию: True

Если True, выполняется внутреннее масштабирование (на основе scale_factors), чтобы немаскированные треугольники точно помещались в единичную квадратную сетку.

Возвращает:
маскированный массив

Отношение радиуса вписанной окружности к радиусу описанной окружности для каждого «масштабированного» треугольника инкапсулированной триангуляции. Значения, соответствующие маскированным треугольникам, маскируются.

get_flat_tri_mask(min_circle_ratio=0.01, rescale=True)[исходный код]

Удаляет чрезмерно плоские треугольники на границе триангуляции.

Возвращает маску new_mask, с помощью которой можно очистить инкапсулированную триангуляцию от плоских треугольников на её границе (согласно их circle_ratios()). Эту маску следует впоследствии применить к триангуляции с помощью Triangulation.set_mask. new_mask дополняет исходную маску триангуляции: треугольники, маскированные изначально, останутся маскированными.

Массив new_mask вычисляется рекурсивно; на каждом шаге плоские треугольники удаляются, только если они имеют общую сторону с текущей границей сетки. Таким образом, в триангулированной области не возникают новые отверстия.

Параметры:
min_circle_ratiofloat, по умолчанию: 0.01

Граничные треугольники удаляются, если отношение радиусов вписанной и описанной окружностей r/R меньше min_circle_ratio.

rescalebool, по умолчанию: True

Если True, сначала выполняется внутреннее масштабирование (на основе scale_factors), чтобы немаскированные треугольники точно помещались в единичную квадратную сетку. Это масштабирование учитывает возможную разницу масштабов по двум осям.

Возвращает:
массив логических значений

Маска для применения к инкапсулированной триангуляции. Все треугольники, маскированные изначально, останутся маскированными в new_mask.

Примечания

Эта функция предназначена для устранения ситуации, когда триангуляция Делоне неструктурированного набора точек содержит на границе почти плоские треугольники, что приводит к артефактам на графиках (особенно при построении контуров высокого разрешения). После применения вычисленной маски new_mask в инкапсулированной триангуляции не останется немаскированных граничных треугольников с отношением окружностей ниже min_circle_ratio, что улучшит качество сетки при последующем построении графиков или интерполяции.

propertyscale_factors

Коэффициенты масштабирования триангуляции до единичного квадрата.

Возвращает:
(float, float)

Коэффициенты масштабирования (kx, ky), при которых триангуляция [triangulation.x * kx, triangulation.y * ky] точно помещается в единичный квадрат.

© 2012–2026 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/tri_api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API