Spec-Zone.ru › Matplotlib 3.5

matplotlib.tri

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

classmatplotlib.tri.Triangulation(x, y, triangles=None, mask=None)[source]

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

Параметры
x, y(npoints,) массив-подобный объект

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

triangles(ntri, 3) массив-подобный объект целых чисел, необязательно

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

mask(ntri,) массив-подобный объект булевых значений, необязательно

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

Примечания

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

Атрибуты
triangles(ntri, 3) массив целых чисел

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

mask(ntri, 3) массив булевых значений

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

is_delaunaybool

Является ли триангуляция вычисленной триангуляцией Делоне (где 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 или массив булевых значений длиной ntri
classmatplotlib.tri.TriContourSet(ax, *args, **kwargs)[source]

Базовый класс: matplotlib.contour.ContourSet

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

Этот класс обычно не создается напрямую пользователем, но используется tricontour и tricontourf.

Атрибуты
axAxes

Объект Axes, в котором отрисовываются контуры.

collectionssilent_list объектов PathCollection

Объекты Artist, представляющие контур. Это список объектов PathCollection для линий и заполненных контуров.

levelsмассив

Значения уровней контура.

layersмассив

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

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

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

END_OF_DOCUMENT_MARKER
classmatplotlib.tri.TriFinder(triangulation)[source]

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

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

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

classmatplotlib.tri.TrapezoidMapTriFinder(triangulation)[source]

Базируется на matplotlib.tri.trifinder.TriFinder

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

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

classmatplotlib.tri.TriInterpolator(triangulation, z, trifinder=None)[source]

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

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

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

Базируется на matplotlib.tri.triinterpolate.TriInterpolator

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

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

Параметры
triangulationTriangulation

Треугольная сетка для интерполяции.

z(npoints,) array-like

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

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

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

Методы

`__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]

Bases: matplotlib.tri.triinterpolate.TriInterpolator

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

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

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

Параметры
triangulationTriangulation

Треугольная сетка для интерполяции.

z(npoints,) array-like

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

kind{'min_E', 'geom', 'user'}, optional

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

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

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

dztuple of array-likes (dzdx, dzdy), optional

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

Примечания

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

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

В стандартном случае (kind ='min_E'), интерполянт минимизирует энергию кривизны в функциональном пространстве, генерируемом базисными функциями элемента ХКТ — с заданными значениями, но произвольными производными в каждом узле. Минимизируемый функционал — это интеграл так называемой полной кривизны (реализация основана на алгоритме из [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, "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;

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

END_OF_DOCUMENT_MARKER
classmatplotlib.tri.UniformTriRefiner(triangulation)[source]

Основы: matplotlib.tri.trirefine.TriRefiner

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

Параметры
triangulationTriangulation

Оборачиваемая триангуляция (для уточнения)

refine_field(z, triinterpolator=None, subdiv=3)[source]

Уточнение поля, определённого на охватываемой триангуляции.

Параметры
z(npoints,) массив-подобный

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

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

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

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

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

Возвращает
refi_triTriangulation

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

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

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

refine_triangulation(return_tri_index=False, subdiv=3)[source]

Вычисление равномерно уточнённой триангуляции 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)[source]

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

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

Параметры
triangulationTriangulation

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

Атрибуты
scale_factors

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

circle_ratios(rescale=True)[source]

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

Отношение радиуса вписанной окружности к радиусу описанной окружности — широко используемый показатель плоскогости треугольника. Оно всегда <= 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)[source]

Исключает слишком плоские граничные треугольники из треугольной сетки.

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

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

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

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

rescalebool, по умолчанию: 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–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.5.1/api/tri_api.html

Spec-Zone.ru

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