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:
objectPathпредставляет собой серию, возможно, несвязных, возможно, замкнутых, линейных и кривых сегментов.- Базовое хранилище состоит из двух параллельных массивов 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)
-
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() -
Возвращает
Lancaster, Don. Приближение окружности или эллипса с помощью четырёх кубических сплайнов Безье.Pathправой половины единичной окружности. Окружность аппроксимируется кубическими кривыми Безье. Используется 4 сплайна вокруг окружности, используя подход, представленный здесь:
-
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