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:
objectPathпредставляет собой серию, возможно, разрозненных, возможно, замкнутых линейных и криволинейных сегментов.- Подлежащее хранилище состоит из двух параллельных массивов 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)
-
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