Spec-Zone.ru › Matplotlib 2.1

path

matplotlib.path

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

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

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

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

Bases: object

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

Базовое хранилище состоит из двух параллельных массивов numpy:
  • vertices: массив Nx2 с плавающей точкой вершин
  • codes: массив uint8 длиной N с типами вершин

Эти два массива всегда имеют одинаковую длину в первом измерении. Например, для представления кубической кривой необходимо указать три вершины, а также три кода 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'.

Примечание

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

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

Parameters:

vertices : array_like

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

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

codes : {None, array_like}, optional

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

_interpolation_steps : int, optional

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

closed : bool, optional

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

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

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

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

Parameters:

center : пара чисел с плавающей точкой

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

radius : число с плавающей точкой

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

readonly : bool

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

Примечания

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

Лэнкэстер, Дон. Приближение окружности или эллипса с помощью четырех кубических сплайнов Безье.
cleaned(transform=None, remove_nans=False, clip=None, quantize=False, simplify=False, curves=False, stroke_width=1.0, snap=False, sketch=None)

Очищает путь в соответствии с параметрами, возвращая новый экземпляр Path.

См. также

См. iter_segments() для получения подробной информации об именованных аргументах.

Returns: Экземпляр Path с очищенными вершинами и кодами.
clip_to_bbox(bbox, inside=True)

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

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

Если inside это True, обрезание происходит внутри области, в противном случае - снаружи.

code_type

псевдоним uint8

codes

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

contains_path(path, transform=None)

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

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

contains_point(point, transform=None, radius=0.0)

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

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

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

contains_points(points, transform=None, radius=0.0)

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

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

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

copy()

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

deepcopy(memo=None)

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

get_extents(transform=None)

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

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

has_nonfinite

True, если массив вершин содержит бесконечные значения.

classmethod hatch(hatchpattern, density=6)

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

interpolated(steps)

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

intersects_bbox(bbox, filled=True)

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

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

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

intersects_path(other, filled=True)

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

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

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

Итерируется по всем сегментам кривых в пути. Каждый шаг возвращает пару (vertices, code), где vertices — последовательность от 1 до 3 пар координат, а code — один из кодов Path.

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

Параметры:

transform : None или экземпляр Transform

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

remove_nans : {False, True}, необязательно

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

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

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

snap : None или bool, необязательно

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

stroke_width : float, необязательно

Ширина штриха, который рисуется. Необходимо

как подсказка для алгоритма подгонки.

simplify : None или bool, необязательно

Если True, выполняется упрощение, чтобы удалить

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

curves : {True, False}, необязательно

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

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

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

classmethod make_compound_path(*args)

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

classmethod make_compound_path_from_polys(XY)

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

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

../_images/histogram_path.png
readonly

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

should_simplify

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

simplify_threshold

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

to_polygons(transform=None, width=0, height=0, closed_only=True)

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

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

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

transformed(transform)

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

См. также

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

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

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

classmethod unit_circle_righthalf()

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

Lancaster, Don. Приближение окружности или эллипса с помощью четырёх кубических сплайнов Безье.
classmethod unit_rectangle()

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

classmethod unit_regular_asterisk(numVertices)

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

classmethod unit_regular_polygon(numVertices)

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

classmethod unit_regular_star(numVertices, innerCircle=0.5)

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

vertices

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

classmethod wedge(theta1, theta2, n=None)

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

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

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

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

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

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

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

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

offsets — последовательность смещений (x, y) (или массив Nx2).

offset_transform — Affine2D для применения к смещениям перед применением смещения к пути.

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

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

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

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

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

© 2012–2017 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
http://matplotlib.org/2.1.0/api/path_api.html

Spec-Zone.ru

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