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>)[исходный код]
-
Задаёт несколько свойств одновременно.
Поддерживаются следующие свойства:
Свойство
Описание
функция фильтра, принимающая массив чисел с плавающей запятой формы (m, n, 3) и значение dpi и возвращающая массив формы (m, n, 3) и два смещения от левого нижнего угла изображения
array-like или float или None
bool
antialiasedилиaaилиantialiasedsbool или список значений bool
array-like или None
CapStyleили {'butt', 'projecting', 'round'}(vmin: float, vmax: float)
BboxBaseили Nonebool
Patch или (Path, Transform) или None
Colormapили str или Noneцвет или список кортежей RGBA
edgecolorилиecилиedgecolorsfacecolorилиfacecolorsилиfcstr
{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
неизвестно
bool
JoinStyleили {'miter', 'round', 'bevel'}object
linestyleилиdashesилиlinestylesилиlsstr, кортеж или список таких значений
linewidthилиlinewidthsилиlwfloat или список значений float
bool
Normalizeили str или Nonearray-like формы (N, 2) или (2,)
список объектов
AbstractPathEffectнеизвестно
None, bool, float или callable
float
bool
(scale: float, length: float, randomness: float)
bool или None
str
список значений str или None
bool
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). Таким образом, интерполированные значения непрерывны на всей триангуляции, но их первые производные разрывны на рёбрах между треугольниками.
- Параметры:
-
-
triangulation
Triangulation -
Триангуляция, по которой выполняется интерполяция.
- z(npoints,) array-like
-
Массив значений, заданных в узлах сетки, между которыми выполняется интерполяция.
-
trifinder
TriFinder, необязательный -
Если параметр не указан, будет использоваться TriFinder по умолчанию для Triangulation, полученный вызовом
Triangulation.get_trifinder.
-
triangulation
Методы
`__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 получает заданные пользователем значения функции в каждом узле и вычисляет значения производных, обеспечивая плавную интерполяцию. (В качестве особой возможности пользователь может также задать значения производных в каждом узле, однако обычно так не делают.)
- Параметры:
-
-
triangulation
Triangulation -
Триангуляция, по которой выполняется интерполяция.
- z(npoints,) array-like
-
Массив значений, заданных в узлах сетки, между которыми выполняется интерполяция.
- kind{'min_E', 'geom', 'user'}, необязательный
-
Выбор алгоритма сглаживания для вычисления производных интерполянта (по умолчанию — 'min_E'):
- если 'min_E': (по умолчанию) производные в каждом узле вычисляются так, чтобы минимизировать энергию изгиба.
- если 'geom': производные в каждом узле вычисляются как взвешенное среднее соответствующих нормалей треугольников. Используется для оптимизации скорости на больших сетках.
- если 'user': пользователь передаёт аргумент dz, поэтому вычисления не требуются.
-
trifinder
TriFinder, необязательный -
Если параметр не указан, будет использоваться TriFinder по умолчанию для Triangulation, полученный вызовом
Triangulation.get_trifinder. - dzкортеж массивоподобных объектов (dzdx, dzdy), необязательный
-
Используется только при kind ='user'. В этом случае необходимо передать dz в виде (dzdx, dzdy), где dzdx и dzdy — массивы той же формы, что и z, содержащие первые производные интерполянта в точках triangulation.
-
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Равномерное уточнение сетки путём рекурсивного разбиения.
- Параметры:
-
-
triangulation
Triangulation -
Инкапсулированная триангуляция (подлежащая уточнению)
-
triangulation
- refine_field(z, triinterpolator=None, subdiv=3)[исходный код]
-
Уточняет поле, заданное на инкапсулированной триангуляции.
- Параметры:
-
- z(npoints,) array-like
-
Значения поля для уточнения, заданные в узлах инкапсулированной триангуляции. (
n_points— число точек в исходной триангуляции.) -
triinterpolator
TriInterpolator, необязательный -
Интерполятор, используемый для интерполяции поля. Если не указан, будет использоваться
CubicTriInterpolator. - subdivint, по умолчанию: 3
-
Уровень рекурсии при разбиении. Каждый треугольник делится на
4**subdivдочерних треугольника.
- Возвращает:
-
-
refi_tri
Triangulation -
Возвращаемая уточнённая триангуляция.
- refi_zодномерный массив длины: число узлов refi_tri.
-
Возвращаемое интерполированное поле (в узлах 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_triangulation
Triangulation -
Уточнённая триангуляция.
- found_indexмассив целых чисел
-
Индекс треугольника исходной триангуляции, содержащего каждую точку refi_triangulation. Возвращается только если return_tri_index имеет значение True.
-
refi_triangulation
- classmatplotlib.tri.TriAnalyzer(triangulation)[исходный код]
-
Предоставляет базовые средства для анализа и улучшения треугольной сетки.
TriAnalyzer инкапсулирует объект
Triangulationи предоставляет базовые средства для анализа и улучшения сетки.- Параметры:
-
-
triangulation
Triangulation -
Инкапсулированная триангуляция для анализа.
-
triangulation
- Атрибуты:
-
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