Spec-Zone.ru › Matplotlib 3.4

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]

Основания: object

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

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

  • vertices: массив float Nx2 вершин
  • codes: массив uint8 длиной N типов вершин или None

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

Типы кодов:

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

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

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

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

Примечание

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

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

Параметры:
vertices(N, 2) array-like

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

codesarray-like или None, необязательно

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

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

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

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

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

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

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

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.

Masionobe, L. 2003. Drawing an elliptical arc using polylines, quadratic or cubic Bezier curves.
classmethod circle(center=(0.0, 0.0), radius=1.0, readonly=False)[source]

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

Параметры:
center(float, float), по умолчанию: (0, 0)

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

radiusfloat, по умолчанию: 1

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

readonlybool

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

Примечания

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

Lancaster, Don. Approximating a Circle or an Ellipse Using Four Bezier Cubic Splines.
cleaned(transform=None, remove_nans=False, clip=None, quantize=<deprecated parameter>, simplify=False, curves=False, stroke_width=1.0, snap=False, sketch=None)[source]

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

См. также

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

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

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

Если inside равно True, обрезать до внутренней части прямоугольника, в противном случае до внешней.

code_type

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

END_OF_DOCUMENT_MARKER ```
свойствоcodes

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

contains_path(path, transform=None)[source]

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

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

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

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

Траектория всегда обрабатывается как замкнутая; т.е. если последний код не CLOSEPOLY, предполагается неявный отрезок, соединяющий последнюю вершину с первой вершиной.

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

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

transformmatplotlib.transforms.Transform, необязательно

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

radiusfloat, по умолчанию: 0

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

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

Примечания

У текущего алгоритма есть некоторые ограничения:

  • Результат не определен для точек, находящихся точно на границе (т.е. на траектории, смещенной на radius/2).
  • Результат не определен, если нет замкнутой области, т.е. все вершины находятся на прямой линии.
  • Если ограничивающие линии начинают пересекаться из-за смещения radius, результат не гарантируется.
contains_points(points, transform=None, radius=0.0)[source]

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

Траектория всегда обрабатывается как замкнутая; т.е. если последний код не CLOSEPOLY, предполагается неявный отрезок, соединяющий последнюю вершину с первой вершиной.

Параметры:
points(N, 2) массив

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

transformmatplotlib.transforms.Transform, необязательно

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

radiusfloat, по умолчанию: 0

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

Возвращает:
массив bool длины N

Примечания

У текущего алгоритма есть некоторые ограничения:

  • Результат не определен для точек, находящихся точно на границе (т.е. на траектории, смещенной на radius/2).
  • Результат не определен, если нет замкнутой области, т.е. все вершины находятся на прямой линии.
  • Если ограничивающие линии начинают пересекаться из-за смещения radius, результат не гарантируется.
copy()

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

deepcopy(memo=None)

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

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

Получение Bbox траектории.

Параметры:
transformmatplotlib.transforms.Transform, необязательно

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

**kwargs

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

Возвращает:
matplotlib.transforms.Bbox

Границы траектории Bbox([[xmin, ymin], [xmax, ymax]])

статическийhatch(hatchpattern, density=6)[source]

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

interpolated(steps)[source]

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

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

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

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

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

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

intersects_path(other, filled=True)[source]

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

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

iter_bezier(**kwargs)[source]

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

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

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

Возвращает:
Bmatplotlib.bezier.BezierSegment

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

codePath.code_type

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

iter_segments(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 или Transform

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

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

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

clipNone или (float, float, float, float), необязательно

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

snapNone или bool, необязательно

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

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

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

simplifyNone или bool, необязательно

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

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

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

sketchNone или последовательность, необязательно

Если не None, должно быть кортежем из 3 элементов вида (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

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

END_OF_DOCUMENT_MARKER
to_polygons(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(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 для единичной регулярной звездочки с заданным numVertices и радиусом 1.0, центрированной в (0, 0).

classmethod unit_regular_polygon(numVertices)[source]

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

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

Возвращает Path для единичной регулярной звезды с заданным numVertices и радиусом 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]

Принимая последовательность Path, объекты Transform и смещения, как в PathCollection, возвращает рамки, которые охватывают все их.

Параметры:
master_transformTransform

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

pathsсписок Path
transformsсписок Affine2D
offsets(N, 2) массив
offset_transformAffine2D

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

Примечания

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

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

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

Spec-Zone.ru

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