Spec-Zone.ru › Matplotlib 3.8

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.

Атрибуты:
axAxes

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

collectionssilent_list из PathCollections

[Устарело]

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

Установка нескольких свойств одновременно.

Поддерживаемые свойства:

Свойство

Описание

agg_filter

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

alpha

массивоподобное значение или скаляр или None

animated

bool

antialiased or aa or antialiaseds

bool или список bool

array

массивоподобное значение или None

capstyle

CapStyle or {'butt', 'projecting', 'round'}

clim

(vmin: float, vmax: float)

clip_box

BboxBase or None

clip_on

bool

clip_path

Patch or (Path, Transform) or None

cmap

Colormap or str or None

color

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

edgecolor or ec or edgecolors

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

facecolor or facecolors or fc

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

figure

Figure

gid

str

hatch

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

in_layout

bool

joinstyle

JoinStyle or {'miter', 'round', 'bevel'}

label

object

label_props

unknown

linestyle or dashes or linestyles or ls

str или кортеж или список из них

linewidth or linewidths or lw

float или список float

mouseover

bool

norm

Normalize or str or None

offset_transform or transOffset

Transform

offsets

(N, 2) или (2,) массивоподобное значение

path_effects

список AbstractPathEffect

paths

unknown

picker

None или bool или float или вызываемый объект

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)[source]

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

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

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

classmatplotlib.tri.TrapezoidMapTriFinder(triangulation)[source]

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

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

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

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). Таким образом, интерполированные значения непрерывны по всей триангуляции, но их первые производные разрывны на границах между треугольниками.

Параметры:
triangulationTriangulation

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

z(npoints,) array-like

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

trifinderTriFinder, optional

Если это не указано, будет использоваться 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]

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

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

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

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

Параметры:
triangulationTriangulation

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

z(npoints,) array-like

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

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

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

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

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

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

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

Равномерное уточнение сетки путем рекурсивных подразделений.

Параметры:
triangulationTriangulation

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

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

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

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

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

triinterpolatorTriInterpolator, optional

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

subdivint, default: 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, default: False

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

subdivint, default: 3

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

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

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

found_indexint array

Индекс исходной триангуляции, содержащей треугольник, для каждой точки 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, 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

Spec-Zone.ru

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