Spec-Zone.ru › Matplotlib 3.3

matplotlib.path

Модуль для работы с полилиниями, используемыми в Matplotlib.

Основной класс для обработки полилиний в Matplotlib — Path. Практически все векторное рисование использует Path где-то в процессе отрисовки.

Хотя сам экземпляр Path не может быть нарисован, некоторые подклассы Artist, такие как PathPatch и PathCollection, могут использоваться для удобной визуализации Path.

class matplotlib.path.Path(vertices, codes=None, _interpolation_steps=1, closed=False, readonly=False) [source]

Bases: object

Последовательность, возможно, несвязанных, возможно, замкнутых, линейных и криволинейных сегментов.

Базовое хранилище состоит из двух параллельных массивов NumPy:

  • vertices: двумерный массив с плавающей точкой Nx2 вершин
  • codes: одномерный массив uint8 типов вершин или None

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

Типы кодов:

  • STOP1 vertex (ignored)
    Пометка конца всего пути (в настоящее время не требуется и игнорируется)
  • MOVETO1 vertex
    Поднять перо и переместиться к указанной вершине.
  • LINETO1 vertex
    Нарисовать линию от текущей позиции до указанной вершины.
  • CURVE31 control point, 1 endpoint
    Нарисовать квадратичную кривую Безье от текущей позиции, с заданной контрольной точкой, до заданной конечной точки.
  • CURVE42 control points, 1 endpoint
    Нарисовать кубическую кривую Безье от текущей позиции, с заданными контрольными точками, до заданной конечной точки.
  • CLOSEPOLY1 vertex (ignored)
    Нарисовать отрезок прямой до начальной точки текущей полилинии.

Если codes равно None, оно интерпретируется как MOVETO и за ним следует ряд LINETO.

Пользователи объектов Path не должны напрямую обращаться к массивам vertices и codes. Вместо этого они должны использовать iter_segments или cleaned, чтобы получить пары вершина/код. Это особенно полезно для последовательной обработки случая, когда codes равно None.

Некоторое поведение объектов Path может контролироваться с помощью rcParams. См. rcParams, ключи которых начинаются с 'path.'.

Примечание

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

Создает новый путь с заданными вершинами и кодами.

Параметры:
verticesarray-like

Массив (N, 2) с плавающей точкой, массив с маской или последовательность пар, представляющих вершины пути.

Если vertices содержит значения с маской, они будут преобразованы в NaN, которые затем правильно обрабатываются Agg PathIterator и другими потребителями данных пути, такими как iter_segments().

codesarray-like or None, optional

Массив целых чисел длиной n, представляющих коды пути. Если не равно None, коды должны иметь ту же длину, что и вершины. Если равно None, vertices будет рассматриваться как последовательность отрезков прямых.

_interpolation_stepsint, optional

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

closedbool, optional

Если codes равно None и closed равно True, вершины будут рассматриваться как отрезки прямых замкнутого многоугольника. Обратите внимание, что последняя вершина будет затем пропущена (так как соответствующий код будет установлен в CLOSEPOLY).

readonlybool, optional

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

CLOSEPOLY = 79
CURVE3 = 3
CURVE4 = 4
LINETO = 2
MOVETO = 1
NUM_VERTICES_FOR_CODE = {0: 1, 1: 1, 2: 1, 3: 2, 4: 3, 79: 1}

Словарь, сопоставляющий коды Path с количеством вершин, ожидаемых кодом.

STOP = 0
classmethod arc(theta1, theta2, n=None, is_wedge=False) [source]

Возвращает дугу единичной окружности от углов theta1 до theta2 (в градусах).

theta2 разворачивается, чтобы получить кратчайшую дугу в пределах 360 градусов. То есть, если theta2 > theta1 + 360, дуга будет от theta1 до theta2 - 360, а не полная окружность плюс некоторое дополнительное перекрытие.

Если указано n, оно представляет собой количество сегментов сплайна. Если n не указано, количество сегментов сплайна определяется на основе разницы между theta1 и theta2.

Масинобе, Л. 2003. Рисование эллиптической дуги с помощью полилиний, квадратичных или кубических кривых Безье.
classmethod circle(center=0.0, 0.0, radius=1.0, readonly=False) [source]

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

Параметры:
center(float, float), default: (0, 0)

Центр окружности.

radiusfloat, default: 1

Радиус окружности.

readonlybool

Указывает, должен ли созданный путь иметь аргумент "только для чтения" при создании экземпляра Path.

Примечания

Окружность аппроксимируется с помощью 8 кубических кривых Безье, как описано в

Ланкастер, Дон. Аппроксимация окружности или эллипса с помощью четырех кубических сплайнов Безье.
cleaned(self, transform=None, remove_nans=False, clip=None, quantize=<deprecated parameter>, simplify=False, curves=False, stroke_width=1.0, snap=False, sketch=None) [source]

Возвращает новый Path с очищенными вершинами и кодами в соответствии с параметрами.

См. также

Path.iter_segments
для получения подробностей о ключевых аргументах.
clip_to_bbox(self, bbox, inside=True) [source]

Обрезает путь до заданной области.

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

Если inside равно True, обрезка выполняется внутри области, в противном случае — снаружи.

code_type

псевдоним для numpy.uint8

property codes

Список кодов в Path в виде одномерного массива NumPy. Каждый код — это один из STOP, MOVETO, LINETO, CURVE3, CURVE4 или CLOSEPOLY. Для кодов, которые соответствуют более чем одной вершине (CURVE3 и CURVE4), этот код будет повторяться, чтобы длина self.vertices и self.codes всегда была одинаковой.

contains_path(self, path, transform=None) [source]

Возвращает, полностью ли этот (замкнутый) путь содержит заданный путь.

Если transform не None, путь будет преобразован перед проверкой включения.

contains_point(self, point, transform=None, radius=0.0) [source]

Определяет, содержит ли (замкнутая) траектория заданную точку.

Параметры:
point(float, float)

Точка (x, y) для проверки.

transformmatplotlib.transforms.Transform, optional

Если не None, point будет сравниваться с self , преобразованной с помощью transform; для правильной проверки transform должен преобразовать траекторию в систему координат point.

radiusfloat, default: 0

Добавляет дополнительный отступ на траектории в координатах point. Траектория расширяется по касательной на radius/2; то есть, если бы траектория была нарисована с толщиной линии radius, все точки на линии всё равно считались бы находящимися внутри области. И наоборот, отрицательные значения уменьшают область: точки на воображаемой линии будут считаться за пределами области.

Возвращаемое значение:
bool
contains_points(self, points, transform=None, radius=0.0) [source]

Определяет, содержит ли (замкнутая) траектория заданные точки.

Параметры:
points(N, 2) array

Точки для проверки. Столбцы содержат значения x и y.

transformmatplotlib.transforms.Transform, optional

Если не None, points будет сравниваться с self , преобразованной с помощью transform; для правильной проверки transform должен преобразовать траекторию в систему координат points.

radiusfloat, default: 0.

Добавляет дополнительный отступ на траектории в координатах points. Траектория расширяется по касательной на radius/2; то есть, если бы траектория была нарисована с толщиной линии radius, все точки на линии всё равно считались бы находящимися внутри области. И наоборот, отрицательные значения уменьшают область: точки на воображаемой линии будут считаться за пределами области.

Возвращаемое значение:
массив bool длины N
copy(self)

Возвращает поверхностную копию Path, которая будет использовать вершины и коды из исходной Path.

deepcopy(self, memo=None)

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

get_extents(self, transform=None, **kwargs) [source]

Получить прямоугольник (Bbox) траектории.

Параметры:
transformmatplotlib.transforms.Transform, optional

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

**kwargs

Передаётся в iter_bezier.

Возвращаемое значение:
matplotlib.transforms.Bbox

Границы траектории (прямоугольник) Bbox([[xmin, ymin], [xmax, ymax]])

static hatch(hatchpattern, density=6) [source]

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

interpolated(self, steps) [source]

Возвращает новую траекторию, ресемплированную до длины N x steps.

Коды, отличные от LINETO, не обрабатываются корректно.

intersects_bbox(self, bbox, filled=True) [source]

Возвращает, пересекает ли эта траектория заданный прямоугольник Bbox.

Если filled равно True, то это также возвращает True, если траектория полностью охватывает прямоугольник Bbox (т.е., траектория рассматривается как заполненная).

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

intersects_path(self, other, filled=True) [source]

Возвращает, пересекается ли эта траектория с другой данной траекторией.

Если filled равно True, то это также возвращает True, если одна траектория полностью охватывает другую (т.е., траектории рассматриваются как заполненные).

iter_bezier(self, **kwargs) [source]

Итерирует по каждой кривой Безье (включая линии) в траектории.

Параметры:
**kwargs

Передаётся в iter_segments.

Выход:
Bmatplotlib.bezier.BezierSegment

Кривые Безье, составляющие текущую траекторию. Обратите внимание, что отдельные точки являются кривыми Безье нулевого порядка, а линии — кривыми Безье первого порядка (с двумя опорными точками).

codePath.code_type

Код, описывающий тип возвращаемой кривой. Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE4 соответствуют кривым Безье с 1, 2, 3 и 4 опорными точками (соответственно). Path.CLOSEPOLY — Path.LINETO с опорными точками, правильно выбранными на основе начальных/конечных точек текущей линии.

iter_segments(self, transform=None, remove_nans=True, clip=None, snap=False, stroke_width=1.0, simplify=None, curves=True, sketch=None) [source]

Итерируется по всем сегментам кривых в траектории.

В каждой итерации возвращается пара (vertices, code), где vertices — последовательность из 1-3 пар координат, а code — код Path.

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

Параметры:
transformNone or Transform

Если не равно None, указанное аффинное преобразование будет применено к траектории.

remove_nansbool, optional

Необходимо ли удалять все NaN из траектории и пропускать их с помощью команд MOVETO.

clipNone or (float, float, float, float), optional

Если не равно None, должно быть четвёркой (x1, y1, x2, y2), определяющей прямоугольник для обрезки траектории.

snapNone or bool, optional

Если True, все узлы будут привязаны к пикселям; если False, не будут. Если None, привязка происходит, если траектория содержит только сегменты, параллельные осям x или y, и не более 1024 из них.

stroke_widthfloat, optional

Ширина линии (используется для привязки траектории к пикселям).

simplifyNone or bool, optional

Нужно ли упрощать траекторию путём удаления вершин, которые не влияют на её внешний вид. Если None, используйте атрибут should_simplify. См. также rcParams["path.simplify"] (по умолчанию: True) и rcParams["path.simplify_threshold"] (по умолчанию: 0.111111111111).

curvesbool, optional

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

sketchNone or sequence, optional

Если не равно None, должно быть тройкой (scale, length, randomness), представляющей параметры черчения.

classmethod make_compound_path(*args) [source]

Создаёт сложную траекторию из списка объектов Path. Бездумно удаляет все контрольные точки Path.STOP.

classmethod make_compound_path_from_polys(XY) [source]

Создаёт объект составного пути для отрисовки нескольких полигонов с равным числом сторон. XY — это массив NumPy (numpolys x numsides x 2) вершин. Возвращаемый объект — Path.

(Исходный код, png, pdf)

../_images/histogram_path_00_00.png
property readonly

True, если Path является только для чтения.

property should_simplify

True, если массив вершин должен быть упрощён.

property simplify_threshold

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

to_polygons(self, transform=None, width=0, height=0, closed_only=True) [source]

Преобразует этот путь в список полигонов или полилиний. Каждый полигон/полилиния — это массив Nx2 вершин. Другими словами, каждый полигон не содержит MOVETO инструкций или кривых. Это полезно для отображения в бэкендах, которые не поддерживают составные пути или кривые Безье.

Если width и height оба отличны от нуля, то линии будут упрощены таким образом, что вершины, находящиеся вне (0, 0), (width, height), будут обрезаны.

Если closed_only — True (по умолчанию), будут возвращены только замкнутые полигоны, где последняя точка совпадает с первой. Любые незамкнутые полилинии в пути будут явно замкнуты. Если closed_only — False, любые незамкнутые полигоны в пути будут возвращены как незамкнутые полигоны, а замкнутые полигоны будут возвращены явно замкнутыми, установив последнюю точку равной первой точке.

transformed(self, transform) [source]

Возвращает преобразованную копию пути.

См. также

matplotlib.transforms.TransformedPath
Специализированный класс пути, который кэширует преобразованный результат и автоматически обновляется при изменении преобразования.
classmethod unit_circle() [source]

Возвращает объект Path единичной окружности (только для чтения).

В большинстве случаев вам понадобится Path.circle().

classmethod unit_circle_righthalf() [source]

Возвращает Path правой половины единичной окружности.

См. Path.circle для справки по используемому приближению.

classmethod unit_rectangle() [source]

Возвращает экземпляр Path единичного прямоугольника от (0, 0) до (1, 1).

classmethod unit_regular_asterisk(numVertices) [source]

Возвращает Path для единичной правильной звездочки с заданным числом вершин и радиусом 1.0, центрированной в (0, 0).

classmethod unit_regular_polygon(numVertices) [source]

Возвращает экземпляр Path для единичного правильного многоугольника с заданным количеством вершин таким образом, что описанная окружность имеет радиус 1.0, центрированная в (0, 0).

classmethod unit_regular_star(numVertices, innerCircle=0.5) [source]

Возвращает Path для единичной правильной звезды с заданным числом вершин и радиусом 1.0, центрированной в (0, 0).

property vertices

Список вершин в Path в виде массива NumPy Nx2.

classmethod wedge(theta1, theta2, n=None) [source]

Возвращает сектор единичной окружности от углов theta1 до theta2 (в градусах).

theta2 разворачивается, чтобы получить наименьший сектор в пределах 360 градусов. То есть, если theta2 > theta1 + 360, сектор будет от theta1 до theta2 - 360, а не полная окружность плюс дополнительное перекрытие.

Если n указано, это количество сегментов сплайна. Если n не указано, количество сегментов сплайна определяется на основе разницы между theta1 и theta2.

См. Path.arc для справки по используемому приближению.

matplotlib.path.get_path_collection_extents(master_transform, paths, transforms, offsets, offset_transform) [source]

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

Параметры:
master_transformTransform

Глобальное преобразование, применяемое ко всем путям.

pathslist of Path
transformslist of Affine2D
offsets(N, 2) array-like
offset_transformAffine2D

Преобразование, применяемое к смещениям перед смещением пути.

Примечания

Способ объединения paths, transforms и offsets аналогичен методу для коллекций: каждый перебирается независимо, поэтому, если у вас есть 3 пути, 2 преобразования и 1 смещение, их комбинации таковы:

(A, A, A), (B, B, A), (C, A, A)

© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.3.3/api/path_api.html

Spec-Zone.ru

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