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