Spec-Zone.ru › Matplotlib 3.2

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: массив float размером Nx2, содержащий вершины
  • codes: массив uint8 длиной N, содержащий типы вершин, или 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.'.

Примечание

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

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

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

Массив float, массив с пропусками или последовательность пар, представляющие вершины пути.

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

codesarray-like or None, optional

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

_interpolation_stepsint, optional

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

closedbool, optional

Если codes равно None и closed равно True, vertices будут интерпретироваться как отрезки линии замкнутого многоугольника.

readonlybool, optional

Делает путь неизменяемым и устанавливает 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.

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

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

Параметры:
centerpair of floats

Центр окружности. По умолчанию (0, 0).

radiusfloat

Радиус окружности. По умолчанию 1.

readonlybool

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

Примечания

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

Ланкастер, Дон. Приближение окружности или эллипса с помощью четырех кубических кривых Безье.
cleaned(self, transform=None, remove_nans=False, clip=None, quantize=False, 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]

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

Если 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) [source]

Возвращает область (xmin, ymin, xmax, ymax) пути.

В отличие от вычисления областей только по vertices, этот алгоритм учтёт кривые и правильно обработает контрольные точки.

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

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

interpolated(self, steps) [source]

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

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

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

Если filled равно True, путь рассматривается как заполненный. То есть, если путь полностью охватывает прямоугольную область, intersects_bbox() вернёт True.

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

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

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

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

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

Итерируется по всем сегментам кривых в пути. В результате каждой итерации возвращается 2-кортеж (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.1111111111111111).

curvesbool, optional

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

sketchNone or sequence, optional

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

classmethod make_compound_path(*args) [source]

Создаёт составной путь из списка объектов Path.

classmethod make_compound_path_from_polys(XY) [source]

Создаёт объект составного пути для рисования нескольких многоугольников с одинаковым числом сторон. XY — это (numpolys x numsides x 2) массив NumPy вершин. Возвращаемый объект — 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 для единичного регулярного многоугольника с заданным numVertices и радиусом 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]

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

Параметры:
master_transformTransform

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

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

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

Примечания

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

(A, A, A), (B, B, A), (C, A, A)
matplotlib.path.get_paths_extents(paths, transforms=[]) [source]

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

paths — последовательность экземпляров Path.

transforms — необязательная последовательность экземпляров Affine2D для применения к каждому пути.

Примечания

Устарело начиная с версии 3.1.

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

Spec-Zone.ru

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