Spec-Zone.ru › Matplotlib 3.4

matplotlib.tri

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

класс matplotlib.tri.Triangulation(x, y, triangles=None, mask=None)[source]

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

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

Координаты точек сетки.

triangles(ntri, 3) array-like целых чисел, необязательно

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

mask(ntri,) array-like булевых значений, необязательно

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

Примечания

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

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

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

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

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

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].

свойство edges

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

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

get_cpp_triangulation()[source]

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

статический get_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.

свойство neighbors

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

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

set_mask(mask)[source]

Устанавливает или очищает массив маски.

Параметры:
maskNone или булевой массив длины ntri
класс matplotlib.tri.TriContourSet(ax, *args, **kwargs)[source]

Наследуется от matplotlib.contour.ContourSet

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

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

Атрибуты:
axAxes

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

collectionssilent_list LineCollection или PathCollection

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

levelsмассив

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

layersмассив

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

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

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

класс matplotlib.tri.TriFinder(triangulation)[source]

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

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

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

класс matplotlib.tri.TrapezoidMapTriFinder(triangulation)[source]

Базы: matplotlib.tri.trifinder.TriFinder

TriFinder класс, реализованный с использованием алгоритма карты трапеций из книги «Вычислительная геометрия, алгоритмы и приложения», второе издание, М. де Берг, М. ван Кревльд, М. Овермарс и О. Шварцкопф.

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

класс matplotlib.tri.TriInterpolator(triangulation, z, trifinder=None)[source]

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

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

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

Базы: matplotlib.tri.triinterpolate.TriInterpolator

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

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

Параметры:
triangulationTriangulation

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

z(npoints,) массивоподобный

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

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

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

Методы

`__call__` (x, y) (Возвращает интерполированные значения в точках (x, y).)
`gradient` (x, y) (Возвращает интерполированные производные в точках (x, y).)
gradient(x, y)[source]

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

Параметры:
x, yмассивоподобный

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

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

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

END_OF_DOCUMENT_MARKER
класс matplotlib.tri.CubicTriInterpolator(triangulation, z, kind='min_E', trifinder=None, dz=None)[source]

Базы: matplotlib.tri.triinterpolate.TriInterpolator

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

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

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

Параметры:
triangulationTriangulation

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

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

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

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

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

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

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

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

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

Примечания

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

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

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

\[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, "Итеративные методы для оптимизации".

Методы

`__call__` (x, y) (Возвращает интерполированные значения в точках (x, y).)
`gradient` (x, y) (Возвращает интерполированные производные в точках (x, y).)
gradient(x, y)[source]

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

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

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

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

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

класс matplotlib.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;

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

класс matplotlib.tri.UniformTriRefiner(triangulation)[source]

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

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

Параметры:
triangulationTriangulation

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

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

Уточнение поля, определенного на обернутой триангуляции.

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

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

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

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

subdivцелое число, по умолчанию: 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

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

subdivцелое число, по умолчанию: 3

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

Возвращаемые значения:
refi_triangulationTriangulation

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

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

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

класс matplotlib.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, что повышает качество сетки для последующих графиков или интерполяции.

свойство scale_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.4.3/api/tri_api.html

Spec-Zone.ru

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