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.- Атрибуты:
-
-
ax
Axes -
Объект Axes, в котором нарисованы контуры.
-
collectionssilent_listизPathCollection -
[Устарело]
- levelsмассив
-
Значения уровней контура.
- layersмассив
-
То же, что и 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>, 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]
-
Установить несколько свойств одновременно.
Поддерживаемые свойства:
Свойство
Описание
Функция фильтра, принимающая массив (m, n, 3) с плавающей точкой и значение dpi, и возвращающая массив (m, n, 3) и два смещения от нижнего левого угла изображения
Массивоподобный объект, скаляр или None
bool
antialiasedили aa или antialiasedsbool или список bool
Массивоподобный объект или None
CapStyleили {'butt', 'projecting', 'round'}(vmin: float, vmax: float)
BboxBaseили Nonebool
Patch или (Path, Transform) или None
Colormapили строка или Noneцвет или список кортежей RGBA
edgecolorили ec или edgecolorsfacecolorили facecolors или fcстрока
{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
bool
JoinStyleили {'miter', 'round', 'bevel'}объект
linestyleили штрихи или стили_линий или lsстрока или кортеж или список кортежей
linewidthили linewidths или lwчисло с плавающей точкой или список чисел с плавающей точкой
bool
Normalizeили строка или Noneoffset_transformили transOffset(N, 2) или (2,) массивоподобный объект
список
AbstractPathEffectнеизвестно
None или bool или число с плавающей точкой или вызываемая функция
число с плавающей точкой
bool
(scale: float, length: float, randomness: float)
bool или None
строка
список строк или None
bool
-
вещественное число
- классmatplotlib.tri.TriFinder(triangulation)[source]
-
Абстрактный базовый класс для классов, используемых для поиска треугольников Triangulation, в которых лежат точки (x, y).
Вместо создания объекта класса, производного от TriFinder, обычно лучше использовать функцию
Triangulation.get_trifinder.Производные классы реализуют __call__(x, y), где x и y — массив-подобные координаты точек с одинаковой формой.
- классmatplotlib.tri.TrapezoidMapTriFinder(triangulation)[source]
-
Базы:
TriFinderTriFinderкласс, реализованный с использованием алгоритма карты трапеций из книги "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). Интерполированные значения, таким образом, являются непрерывными по всей триангуляции, но их первые производные разрывны на ребрах между треугольниками.
- Параметры:
-
-
triangulation
Triangulation -
Триангуляция для интерполяции.
- z(npoints,) массив-подобный объект
-
Массив значений, определённых в узлах сетки, для интерполяции.
-
trifinder
TriFinder, необязательно -
Если это не указано, по умолчанию будет использован TriFinder триангуляции, вызывая
Triangulation.get_trifinder.
-
triangulation
Методы
`__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}\).
- classmatplotlib.tri.CubicTriInterpolator(triangulation, z, kind='min_E', trifinder=None, dz=None)[source]
-
Bases:
TriInterpolatorКубический интерполятор на треугольной сетке.
В одномерном случае — на отрезке — кубическая интерполирующая функция определяется значениями функции и её производной на обоих концах. Это почти то же самое в 2D внутри треугольника, за исключением того, что значения функции и её 2 производных должны быть определены в каждом узле треугольника.
CubicTriInterpolator принимает значение функции в каждом узле — предоставленное пользователем — и внутренне вычисляет значение производных, что приводит к гладкой интерполяции. (В качестве специальной функции пользователь также может задать значение производных в каждом узле, но это не предполагается быть общим случаем использования.)
- Параметры:
-
-
triangulation
Triangulation -
Треугольная сетка для интерполяции.
- z(npoints,) массив
-
Массив значений, определенных в узлах сетки, для интерполяции между ними.
- kind{'min_E', 'geom', 'user'}, необязательно
-
Выбор алгоритма сглаживания для вычисления производных интерполянта (по умолчанию 'min_E'):
- если 'min_E': (по умолчанию) Производные в каждом узле вычисляются для минимизации энергии изгиба.
- если 'geom': Производные в каждом узле вычисляются как взвешенное среднее соответствующих нормалей к треугольникам. Используется для оптимизации скорости (большие сетки).
- если 'user': Пользователь предоставляет аргумент dz, вычисления не требуются.
-
trifinder
TriFinder, необязательно -
Если не указано, по умолчанию используется TriFinder треугольной сетки, вызывается
Triangulation.get_trifinder. - dzкортеж массивов (dzdx, dzdy), необязательно
-
Используется только если kind ='user'. В этом случае dz должен быть предоставлен как (dzdx, dzdy), где dzdx, dzdy — массивы той же формы, что и z, и представляют собой первые производные интерполянта в точках triangulation.
-
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;
и который возвращает (как кортеж) уточнённую треугольную сетку и интерполированные значения поля в узлах уточнённой треугольной сетки.
-
- classmatplotlib.tri.UniformTriRefiner(triangulation)[source]
-
Основа:
TriRefinerРавномерное уточнение сетки путём рекурсивных подразделений.
- Параметры:
-
-
triangulation
Triangulation -
Оборачиваемая триангуляция (для уточнения)
-
triangulation
- refine_field(z, triinterpolator=None, subdiv=3)[source]
-
Уточнение поля, определённого на охватываемой триангуляции.
- Параметры:
-
- z(npoints,) массив-подобный
-
Значения поля для уточнения, определённые в узлах охватываемой триангуляции. (
n_points— количество точек в исходной триангуляции) -
triinterpolator
TriInterpolator, необязательно -
Интерполятор, используемый для интерполяции поля. Если не указан, будет использован
CubicTriInterpolator. - subdivint, по умолчанию: 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, по умолчанию: False
-
Возвращать ли таблицу индексов, указывающую индекс родительского треугольника каждой точки.
- subdivint, по умолчанию: 3
-
Уровень рекурсии для подразбиения. Каждый треугольник делится на
4**subdivдочерних треугольников; таким образом, значение по умолчанию приводит к 64 уточнённым подтреугольникам для каждого треугольника исходной триангуляции.
- Возвращаемые значения:
-
-
refi_triangulation
Triangulation -
Уточнённая триангуляция.
- found_indexмассив int
-
Индекс исходной триангуляции, содержащий треугольник для каждой точки 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, по умолчанию: 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