Spec-Zone.ru › Matplotlib 3.6

matplotlib.path

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

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

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

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

Базы: object

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

В основе хранения лежат две параллельные массива numpy:

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

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

Типы кодов:

  • STOP1 вершина (игнорируется)

    Маркер конца всей траектории (в настоящее время не требуется и игнорируется)

  • MOVETO1 вершина

    Поднять перо и переместиться в заданную вершину.

  • LINETO1 вершина

    Нарисовать линию от текущей позиции до заданной вершины.

  • CURVE31 контрольная точка, 1 конечная точка

    Нарисовать квадратичную кривую Безье от текущей позиции, с заданной контрольной точкой, до заданной конечной точки.

  • CURVE42 контрольные точки, 1 конечная точка

    Нарисовать кубическую кривую Безье от текущей позиции, с заданными контрольными точками, до заданной конечной точки.

  • CLOSEPOLY1 вершина (игнорируется)

    Нарисовать отрезок линии до начальной точки текущей ломаной.

Если codes равно None, то vertices интерпретируется как 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, коды должны иметь ту же длину, что и вершины. Если None, vertices будут интерпретированы как серия отрезков прямой.

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

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

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

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

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

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

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
classmethodarc(theta1, theta2, n=None, is_wedge=False)[source]

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

classmethodcircle(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, *, 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

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

propertycodes

Список кодов в Path в виде одномерного массива numpy. Каждый код — один из STOP, MOVETO, LINETO, CURVE3, CURVE4 или CLOSEPOLY. Для кодов, соответствующих более чем одной вершине (CURVE3 и CURVE4), этот код будет повторяться, чтобы длина vertices и 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()[source]

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

deepcopy(memo=None)[source]

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

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

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

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

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

**kwargs

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

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

Прямоугольник (Bbox) пути [[xmin, ymin], [xmax, ymax]]

statichatch(hatchpattern, density=6)[source]

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

interpolated(steps)[source]

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

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

intersects_bbox(bbox, filled=True)[source]

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

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

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

intersects_path(other, filled=True)[source]

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

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

iter_bezier(**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(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, должно быть тройкой вида (scale, length, randomness), представляющей параметры построения эскиза.

classmethodmake_compound_path(*args)[source]

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

classmethodmake_compound_path_from_polys(XY)[source]

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

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

../_images/histogram_path_00_00.png
propertyreadonly

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

propertyshould_simplify

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

propertysimplify_threshold

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

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

Специализированный класс пути, который кеширует преобразованный результат и автоматически обновляется при изменении преобразования.

classmethodunit_circle()[source]

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

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

classmethodunit_circle_righthalf()[source]

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

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

classmethodunit_rectangle()[source]

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

classmethodunit_regular_asterisk(numVertices)[source]

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

classmethodunit_regular_polygon(numVertices)[source]

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

classmethodunit_regular_star(numVertices, innerCircle=0.5)[source]

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

propertyvertices

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

classmethodwedge(theta1, theta2, n=None)[source]

Возвращает Path для сегмента единичной окружности от углов 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–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.6.0/api/path_api.html

Spec-Zone.ru

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