Spec-Zone.ru › Matplotlib 3.1

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

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

Подлежащее хранилище состоит из двух параллельных массивов numpy:
  • vertices: Nx2 массив float вершин
  • codes: N-длинный массив uint8 типов вершин

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

Типы кодов:

  • STOP : 1 vertex (ignored)
    Маркер конца всего пути (в настоящее время не требуется и игнорируется)
  • MOVETO : 1 vertex
    Поднять перо и переместиться в заданную вершину.
  • LINETO : 1 vertex
    Нарисовать линию от текущей позиции до заданной вершины.
  • CURVE3 : 1 control point, 1 endpoint
    Нарисовать квадратичную кривую Безье от текущей позиции, с заданной контрольной точкой, до заданной конечной точки.
  • CURVE4 : 2 control points, 1 endpoint
    Нарисовать кубическую кривую Безье от текущей позиции, с заданными контрольными точками, до заданной конечной точки.
  • CLOSEPOLY : 1 vertex (ignored)
    Нарисовать отрезок прямой до начальной точки текущей полилинии.

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

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

Примечание

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

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

Параметры:
vertices : array_like

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

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

codes : {None, array_like}, optional

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

_interpolation_steps : int, optional

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

closed : bool, optional

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

readonly : bool, 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.

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

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

Параметры:
center : pair of floats

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

radius : float

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

readonly : bool

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

Примечания

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

Lancaster, Don. Приближение окружности или эллипса с помощью четырех кубических сплайнов Безье.
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.iter_segments
для подробностей о ключевых аргументах.
clip_to_bbox(self, bbox, inside=True) [source]

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

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

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

code_type

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

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]

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

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

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

contains_points(self, points, transform=None, radius=0.0) [source]

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

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

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

copy(self)

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

deepcopy(self, memo=None)

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

get_extents(self, transform=None) [source]

Возвращает пределы (xmin, ymin, xmax, ymax) траектории.

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

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

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

interpolated(self, steps) [source]

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

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

Возвращает True, если эта траектория пересекает заданный 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.

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

Параметры:
transform : None or Transform

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

remove_nans : bool, optional

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

clip : None or (float, float, float, float), optional

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

snap : None or bool, optional

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

stroke_width : float, optional

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

simplify : None or bool, optional

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

curves : bool, optional

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

sketch : None or sequence, optional

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

classmethod make_compound_path(*args) [source]

Создаёт сложную траекторию из списка объектов Path.

classmethod make_compound_path_from_polys(XY) [source]

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

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

../_images/histogram_path_00_00.png
readonly

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

should_simplify

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

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).

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_transform : Transform

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

paths : list of Path
transform : list of Affine2D
offsets : (N, 2) array-like
offset_transform : Affine2D

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

Примечания

Способ объединения путей, преобразований и смещений аналогичен методу для коллекций: каждый итерируется независимо, поэтому если у вас есть 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.1.1/api/path_api.html

Spec-Zone.ru

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