matplotlib.tri
Функции для работы с неупорядоченными треугольными сетками.
- classmatplotlib.tri.Triangulation(x, y, triangles=None, mask=None)[source]
-
Неупорядоченная треугольная сетка, состоящая из npoints точек и ntri треугольников. Треугольники могут быть заданы пользователем или автоматически сгенерированы с помощью триангуляции Делоне.
- Параметры:
-
- x, y(npoints,) array-like
-
Координаты узлов сетки.
- triangles(ntri, 3) array-like of int, optional
-
Для каждого треугольника индексы трёх точек, образующих треугольник, упорядоченные против часовой стрелки. Если не указано, вычисляется триангуляция Делоне.
- mask(ntri,) array-like of bool, optional
-
Какие треугольники замаскированы.
Примечания
Для того, чтобы Triangulation была валидной, она не должна содержать дубликатов точек, треугольников, образованных коллинеарными точками, или перекрывающихся треугольников.
- Атрибуты:
-
- triangles(ntri, 3) array of int
-
Для каждого треугольника индексы трёх точек, образующих треугольник, упорядоченные против часовой стрелки. Если вы хотите учесть mask, используйте
get_masked_trianglesвместо этого. - mask(ntri, 3) array of bool or None
-
Замаскированные треугольники.
- is_delaunaybool
-
Является ли Triangulation вычисленной триангуляцией Делоне (где triangles не был указан) или нет.
- calculate_plane_coefficients(z)[source]
-
Вычислить коэффициенты уравнения плоскости для всех незамаскированных треугольников из координат точек (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()[source]
-
Возвращает базовый объект C++ Triangulation, создавая его при необходимости.
- staticget_from_args_and_kwargs(*args, **kwargs)[source]
-
Возвращает объект Triangulation из args и kwargs, а также оставшиеся args и kwargs с удаленными используемыми значениями.
Есть две альтернативы: либо первый аргумент является объектом Triangulation, в этом случае он возвращается, либо args и kwargs достаточны для создания нового объекта Triangulation для возврата. В последнем случае см. Triangulation.__init__ для возможных args и kwargs.
- get_masked_triangles()[source]
-
Возвращает массив треугольников с учётом маски.
- get_trifinder()[source]
-
Возвращает по умолчанию
matplotlib.tri.TriFinderэтой триангуляции, создавая его при необходимости. Это позволяет легко совместно использовать один и тот же объект TriFinder.
- propertyneighbors
-
Возвращает целочисленный массив формы (ntri, 3), содержащий соседние треугольники.
Для каждого треугольника индексы трёх треугольников, которые имеют общие ребра, или -1, если такого соседнего треугольника нет.
neighbors[i, j]— это треугольник, который является соседом ребра от индекса точкиtriangles[i, j]к индексу точкиtriangles[i, (j+1)%3].
- set_mask(mask)[source]
-
Установить или очистить массив маски.
- Параметры:
-
- maskNone or bool array of length ntri
- classmatplotlib.tri.TriContourSet(ax, *args, **kwargs)[source]
-
Базовый класс:
ContourSetСоздает и хранит набор линий контура или заполненных областей для треугольной сетки.
Этот класс обычно не создается пользователем напрямую, а через
tricontourиtricontourf.- Атрибуты:
-
-
ax
Axes -
Объект Axes, в котором рисуются контуры.
-
collectionssilent_listизPathCollections -
[Устарело]
- levelsarray
-
Значения уровней контура.
- layersarray
-
То же самое, что и levels для линейных контуров; посередине между уровнями для заполненных контуров. См.
ContourSet._process_colors.
-
ax
Рисует линии контура треугольной сетки или заполненные области, в зависимости от того, является ли аргумент ключевого слова 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>, in_layout=<UNSET>, joinstyle=<UNSET>, label=<UNSET>, label_props=<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>)[source]
-
Установка нескольких свойств одновременно.
Поддерживаемые свойства:
Свойство
Описание
функция фильтрации, которая принимает массив float (m, n, 3) и значение dpi, и возвращает массив (m, n, 3) и два смещения от левого нижнего угла изображения
массивоподобное значение или скаляр или None
bool
antialiasedor aa or antialiasedsbool или список bool
массивоподобное значение или None
CapStyleor {'butt', 'projecting', 'round'}(vmin: float, vmax: float)
BboxBaseor Nonebool
Patch or (Path, Transform) or None
Colormapor str or Noneцвет или список кортежей RGBA
edgecoloror ec or edgecolorsцвет или список цветов или 'face'
facecoloror facecolors or fcцвет или список цветов
str
{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
bool
JoinStyleor {'miter', 'round', 'bevel'}object
unknown
linestyleor dashes or linestyles or lsstr или кортеж или список из них
linewidthor linewidths or lwfloat или список float
bool
Normalizeor str or Noneoffset_transformor transOffset(N, 2) или (2,) массивоподобное значение
список
AbstractPathEffectunknown
None или bool или float или вызываемый объект
float
bool
(scale: float, length: float, randomness: float)
bool или None
str
список str или None
bool
float
-
- classmatplotlib.tri.TriFinder(triangulation)[source]
-
Абстрактный базовый класс для классов, используемых для поиска треугольников триангуляции, в которых лежат точки (x, y).
Вместо создания объекта класса, производного от TriFinder, обычно лучше использовать функцию
Triangulation.get_trifinder.Производные классы реализуют __call__(x, y), где x и y — подобные массиву координаты точек одной и той же формы.
- classmatplotlib.tri.TrapezoidMapTriFinder(triangulation)[source]
-
Базовые классы:
TriFinderTriFinderкласс, реализованный с использованием алгоритма карты трапеций из книги "Вычислительная геометрия, алгоритмы и приложения", второе издание, М. де Берг, М. ван Кревельд, М. Овермарс и О. Шварцкопф.Триангуляция должна быть допустимой, т.е. она не должна иметь дубликатов точек, треугольников, образованных коллинеарными точками, или перекрывающихся треугольников. Алгоритм имеет некоторую толерантность к треугольникам, образованным коллинеарными точками, но на это не следует полагаться.
- classmatplotlib.tri.TriInterpolator(triangulation, z, trifinder=None)[source]
-
Абстрактный базовый класс для классов, используемых для интерполяции на треугольной сетке.
Производные классы реализуют следующие методы:
-
__call__(x, y), где x, y — подобные массиву координаты точек одной и той же формы, и который возвращает замаскированный массив той же формы, содержащий интерполированные значения z. -
gradient(x, y), где x, y — подобные массиву координаты точек одной и той же формы, и который возвращает список из 2 замаскированных массивов той же формы, содержащих 2 производные интерполятора (производные интерполированных значений z по x и y).
-
- classmatplotlib.tri.LinearTriInterpolator(triangulation, z, trifinder=None)[source]
-
Базовые классы:
TriInterpolatorЛинейный интерполятор на треугольной сетке.
Каждый треугольник представляется плоскостью, так что интерполированное значение в точке (x, y) лежит на плоскости треугольника, содержащего (x, y). Таким образом, интерполированные значения непрерывны по всей триангуляции, но их первые производные разрывны на границах между треугольниками.
- Параметры:
-
-
triangulation
Triangulation -
Триангуляция для интерполяции.
- z(npoints,) array-like
-
Массив значений, определенных в узлах сетки, для интерполяции между ними.
-
trifinder
TriFinder, optional -
Если это не указано, будет использоваться TriFinder по умолчанию триангуляции, вызвав
Triangulation.get_trifinder.
-
triangulation
Методы
`__call__` (x, y)
(Возвращает интерполированные значения в точках (x, y).
`gradient` (x, y)
(Возвращает интерполированные производные в точках (x, y).
- gradient(x, y)[source]
-
Возвращает список из 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)[source]
-
Базовые классы:
TriInterpolatorКубический интерполятор на треугольной сетке.
В одном измерении - на сегменте - кубическая интерполяционная функция определяется значениями функции и её производной на обоих концах. В 2D внутри треугольника это почти то же самое, за исключением того, что значения функции и её 2 производных должны быть определены в каждой вершине треугольника.
CubicTriInterpolator принимает значение функции в каждой вершине - предоставляемое пользователем - и внутренне вычисляет значение производных, что приводит к плавной интерполяции. (В качестве специальной функции пользователь также может задать значение производных в каждой вершине, но это не должно быть обычным использованием.)
- Параметры:
-
-
triangulation
Triangulation -
Триангуляция для интерполяции.
- z(npoints,) array-like
-
Массив значений, определённых в узлах сетки, между которыми выполняется интерполяция.
- kind{'min_E', 'geom', 'user'}, optional
-
Выбор алгоритма сглаживания для вычисления производных интерполянта (по умолчанию 'min_E'):
- если 'min_E': (по умолчанию) Производные в каждом узле вычисляются для минимизации энергии изгиба.
- если 'geom': Производные в каждом узле вычисляются как взвешенное среднее значение соответствующих нормалей треугольников. Используется для оптимизации скорости (большие сетки).
- если 'user': Пользователь предоставляет аргумент dz, поэтому вычисления не требуются.
-
trifinder
TriFinder, optional -
Если не указано, TriFinder по умолчанию для Triangulation будет использоваться вызовом
Triangulation.get_trifinder. - dztuple of array-likes (dzdx, dzdy), optional
-
Используется только если kind ='user'. В этом случае dz должен быть предоставлен как (dzdx, dzdy), где dzdx, dzdy - массивы той же формы, что и z, и являются первыми производными интерполянта в точках triangulation.
-
triangulation
Замечания
Это замечание несколько техническое и подробно описывает, как выполняется кубическая интерполяция.
Интерполяция основана на схеме подразделения Клоуга-Точера сетки triangulation (для большей ясности, каждый треугольник сетки будет разделён на 3 дочерних треугольника, и на каждом дочернем треугольнике интерполированная функция является кубическим полиномом от 2 координат). Эта методика происходит из анализа МКЭ (метод конечных элементов); используемый элемент является уменьшенным элементом Хсиэ-Клоуга-Точера (HCT). Его формирующие функции описаны в [1]. Сформированная функция гарантированно является C1-гладкой, т.е. она непрерывна, и её первые производные также непрерывны (это легко показать внутри треугольников, но это также верно при пересечении рёбер).
В случае по умолчанию (kind ='min_E') интерполянт минимизирует энергию кривизны на функциональном пространстве, порождаемом формирующими функциями элемента HCT - с наложенными значениями, но произвольными производными в каждом узле. Минимизируемый функционал представляет собой интеграл так называемой полной кривизны (реализация основана на алгоритме из [2] - разрешитель PCG sparse):
\[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, "Basis functions for general Hsieh-Clough-Tocher triangles, complete or reduced.", International Journal for Numerical Methods in Engineering, 17(5):784 - 789. 2.01.
[2]C.T. Kelley, "Iterative Methods for Optimization".
Методы
`__call__` (x, y)
(Возвращает интерполированные значения в точках (x, y).
`gradient` (x, y)
(Возвращает интерполированные производные в точках (x, y).
- gradient(x, y)[source]
-
Возвращает список из 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)[source]
-
Абстрактный базовый класс для классов, реализующих уточнение сетки.
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)[source]
-
Базы:
TriRefinerРавномерное уточнение сетки путем рекурсивных подразделений.
- Параметры:
-
-
triangulation
Triangulation -
Инкапсулированная триангуляция (для уточнения)
-
triangulation
- refine_field(z, triinterpolator=None, subdiv=3)[source]
-
Уточнение поля, определенного на инкапсулированной триангуляции.
- Параметры:
-
- z(npoints,) array-like
-
Значения поля для уточнения, определенные в узлах инкапсулированной триангуляции. (
n_points- это количество точек в исходной триангуляции) -
triinterpolator
TriInterpolator, optional -
Интерполятор, используемый для интерполяции поля. Если не указан, будет использован
CubicTriInterpolator. - subdivint, default: 3
-
Уровень рекурсии для подразделения. Каждый треугольник делится на
4**subdivдочерних треугольников.
- Возвращает:
-
-
refi_tri
Triangulation -
Возвращаемая уточненная триангуляция.
- refi_zОдномерный массив длиной: количество узлов refi_tri.
-
Возвращаемое интерполированное поле (в узлах refi_tri).
-
refi_tri
- refine_triangulation(return_tri_index=False, subdiv=3)[source]
-
Вычислить равномерно уточненную триангуляцию refi_triangulation инкапсулированной
triangulation.Эта функция уточняет инкапсулированную триангуляцию, разделяя каждый треугольник отца на 4 дочерних подтреугольника, построенных на узлах середин сторон, рекурсивно subdiv раз. В конце концов, каждый треугольник, таким образом, делится на
4**subdivдочерних треугольников.- Параметры:
-
- return_tri_indexbool, default: False
-
Возвращать ли таблицу индексов, указывающую индекс треугольника отца для каждой точки.
- subdivint, default: 3
-
Уровень рекурсии для подразделения. Каждый треугольник делится на
4**subdivдочерних треугольников; следовательно, значение по умолчанию приводит к 64 уточненным подтреугольникам для каждого треугольника исходной триангуляции.
- Возвращает:
-
-
refi_triangulation
Triangulation -
Уточненная триангуляция.
- found_indexint array
-
Индекс исходной триангуляции, содержащей треугольник, для каждой точки refi_triangulation. Возвращается только в том случае, если return_tri_index установлен в True.
-
refi_triangulation
- classmatplotlib.tri.TriAnalyzer(triangulation)[source]
-
Определите основные инструменты для анализа и улучшения триангулярных сеток.
TriAnalyzer инкапсулирует объект
Triangulationи предоставляет основные инструменты для анализа и улучшения сеток.- Параметры:
-
-
triangulation
Triangulation -
Инкапсулированная триангуляция для анализа.
-
triangulation
- Атрибуты:
-
scale_factors-
Коэффициенты для изменения масштаба триангуляции в единичный квадрат.
- circle_ratios(rescale=True)[source]
-
Возвращает меру плоскостности треугольников триангуляции.
Отношение радиуса вписанной окружности к радиусу описанной окружности является широко используемым индикатором плоскостности треугольника. Оно всегда
<= 0.5и== 0.5только для равносторонних треугольников. Отношения окружностей ниже 0,01 обозначают очень плоские треугольники.Чтобы избежать чрезмерно низких значений из-за разницы масштаба между двумя осями, триангулярную сетку можно сначала масштабировать, чтобы она поместилась внутри единичного квадрата с помощью
scale_factors(Только если rescale равно True, что является его значением по умолчанию).- Параметры:
-
- rescalebool, default: True
-
Если True, внутренне изменяет масштаб (на основе
scale_factors), так что (не замаскированные) треугольники точно помещаются внутри сетки единичного квадрата.
- Возвращает:
-
- маскированный массив
-
Отношение радиуса вписанной окружности к радиусу описанной окружности для каждого «масштабированного» треугольника инкапсулированной триангуляции. Значения, соответствующие замаскированным треугольникам, маскируются.
- get_flat_tri_mask(min_circle_ratio=0.01, rescale=True)[source]
-
Исключите чрезмерно плоские пограничные треугольники из триангуляции.
Возвращает маску new_mask, которая позволяет очистить инкапсулированную триангуляцию от ее плоских треугольников, расположенных на границе (в соответствии с их
circle_ratios()). Эта маска предназначена для последующего применения к триангуляции с помощьюTriangulation.set_mask. new_mask является расширением начальной маски триангуляции в том смысле, что первоначально замаскированный треугольник останется замаскированным.Массив new_mask вычисляется рекурсивно; на каждом шаге плоские треугольники удаляются только в том случае, если они имеют общую сторону с текущей границей сетки. Таким образом, новые отверстия в триангулированной области создаваться не будут.
- Параметры:
-
- min_circle_ratiofloat, default: 0.01
-
Пограничные треугольники с отношением радиусов вписанной/описанной окружностей r/R будут удалены, если r/R < min_circle_ratio.
- rescalebool, default: True
-
Если True, сначала внутренне изменяет масштаб (на основе
scale_factors), так что (не замаскированные) треугольники точно помещаются внутри сетки единичного квадрата. Это изменение масштаба учитывает разницу масштаба, которая может существовать между двумя осями.
- Возвращает:
-
- массив bool
-
Маска для применения к инкапсулированной триангуляции. Все первоначально замаскированные треугольники остаются замаскированными в new_mask.
Примечания
Обоснование этой функции заключается в том, что триангуляция Делоне — неупорядоченного набора точек — иногда содержит почти плоские треугольники на своей границе, что приводит к артефактам на графиках (особенно для высокоразрешенного контурирования). Замаскированная с вычисленной new_mask, инкапсулированная триангуляция больше не будет содержать незамаскированных пограничных треугольников с отношением окружностей ниже min_circle_ratio, тем самым улучшая качество сетки для последующих графиков или интерполяции.
- propertyscale_factors
-
Коэффициенты для изменения масштаба триангуляции в единичный квадрат.
- Возвращает:
-
- (float, float)
-
Масштабирующие коэффициенты (kx, ky), так что триангуляция
[triangulation.x * kx, triangulation.y * ky]точно помещается внутри единичного квадрата.
© 2012–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.8.4/api/tri_api.html