Spec-Zone.ru › Matplotlib

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

Bases: ContourSet

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

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

Атрибуты:
axAxes

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

collectionssilent_list из PathCollection

[Устарело]

levelsмассив

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

layersмассив

То же, что и 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>, 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

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

alpha

Массивоподобный объект, скаляр или None

animated

bool

antialiased или aa или antialiaseds

bool или список bool

array

Массивоподобный объект или None

capstyle

CapStyle или {'butt', 'projecting', 'round'}

clim

(vmin: float, vmax: float)

clip_box

BboxBase или None

clip_on

bool

clip_path

Patch или (Path, Transform) или None

cmap

Colormap или строка или None

color

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

edgecolor или ec или edgecolors

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

facecolor или facecolors или fc

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

figure

Figure

gid

строка

hatch

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

in_layout

bool

joinstyle

JoinStyle или {'miter', 'round', 'bevel'}

label

объект

linestyle или штрихи или стили_линий или ls

строка или кортеж или список кортежей

linewidth или linewidths или lw

число с плавающей точкой или список чисел с плавающей точкой

mouseover

bool

norm

Normalize или строка или None

offset_transform или transOffset

Transform

offsets

(N, 2) или (2,) массивоподобный объект

path_effects

список AbstractPathEffect

paths

неизвестно

picker

None или bool или число с плавающей точкой или вызываемая функция

pickradius

число с плавающей точкой

rasterized

bool

sketch_params

(scale: float, length: float, randomness: float)

snap

bool или None

transform

Transform

url

строка

urls

список строк или None

visible

bool

zorder

вещественное число

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

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

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

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

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

Базы: TriFinder

TriFinder класс, реализованный с использованием алгоритма карты трапеций из книги "Computational Geometry, Algorithms and Applications", второе издание, М. де Берг, М. ван Кревельд, М. Овермарс и О. Шварцкопф.

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

класс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]

Базы: 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
classmatplotlib.tri.CubicTriInterpolator(triangulation, z, kind='min_E', trifinder=None, dz=None)[source]

Bases: TriInterpolator

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

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

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.

Методы

`__call__` (x, y)

(Возвращает интерполированные значения в точках (x, y).)

`gradient` (x, y)

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

Замечания

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

Интерполяция основана на схеме подразделения Клоуза-Точера сетки triangulation (чтобы было понятнее, каждый треугольник сетки будет разделён на 3 дочерних треугольника, и на каждом дочернем треугольнике интерполирующая функция является кубическим многочленом от 2 координат). Этот метод происходит из анализа метода конечных элементов (МКЭ); используемый элемент — уменьшенный элемент Хси-Клоуза-Точера (ХКТ). Его функции формы описаны в [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".

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]

Основа: 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массив int

Индекс исходной триангуляции, содержащий треугольник для каждой точки 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–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/tri_api.html

Spec-Zone.ru

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