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]
-
Основания:
objectПоследовательность, возможно, несвязанных, возможно, замкнутых, линейных и криволинейных отрезков.
Внутреннее хранилище состоит из двух параллельных массивов numpy:
- vertices: массив float Nx2 вершин
- codes: массив uint8 длиной N типов вершин или None
Эти два массива всегда имеют одинаковую длину в первом измерении. Например, чтобы представить кубическую кривую, вы должны указать три вершины, а также три кода
CURVE3.Типы кодов:
-
-
STOP1 вершина (игнорируется) - Маркер конца всего пути (в настоящее время не требуется и игнорируется)
-
-
-
MOVETO1 вершина - Поднять перо и переместиться в заданную вершину.
-
-
-
LINETO1 вершина - Нарисовать линию от текущей позиции до заданной вершины.
-
-
-
CURVE31 контрольная точка, 1 конечная точка - Нарисовать квадратичную кривую Безье от текущей позиции, с заданной контрольной точкой до заданной конечной точки.
-
-
-
CURVE42 контрольных точки, 1 конечная точка - Нарисовать кубическую кривую Безье от текущей позиции, с заданными контрольными точками до заданной конечной точки.
-
-
-
CLOSEPOLY1 вершина (игнорируется) - Нарисовать отрезок прямой до начальной точки текущей ломаной.
-
Если codes равно None, оно интерпретируется как
MOVETOи за ним следуютLINETO.Пользователи объектов Path не должны напрямую обращаться к массивам vertices и codes. Вместо этого они должны использовать
iter_segmentsилиcleanedдля получения пар вершина/код. Это особенно помогает при согласованной обработке случая, когда codes равно None.Некоторые особенности объектов Path можно настроить с помощью rcParams. Обратите внимание на rcParams, ключи которых начинаются с 'path.'.
Примечание
Массивы vertices и codes следует рассматривать как неизменяемые — ряд оптимизаций и предположений в конструкторе не изменяется при изменении данных.
Создать новый путь с заданными вершинами и кодами.
Параметры: - vertices(N, 2) array-like
-
Вершины пути, как массив, массив с маской или последовательность пар. Значения с маской, если таковые имеются, будут преобразованы в NaN, которые затем обрабатываются корректно Agg PathIterator и другими потребителями данных пути, такими как
iter_segments(). - codesarray-like или None, необязательно
-
Массив целых чисел длиной n, представляющих коды пути. Если не None, коды должны иметь ту же длину, что и vertices. Если None, vertices будут интерпретированы как последовательность отрезков прямой.
- _interpolation_stepsint, необязательно
-
Используется как подсказка для определенных проекций, таких как Polar, для линейной интерполяции этого пути непосредственно перед рисованием. Этот атрибут в основном является реализационной деталью и не предназначен для публичного использования.
- closedbool, необязательно
-
Если codes равно None и closed равно True, vertices будут интерпретированы как отрезки прямой замкнутого многоугольника. Обратите внимание, что последняя вершина затем будет проигнорирована (так как соответствующий код будет установлен на CLOSEPOLY).
- readonlybool, необязательно
-
Делает путь неизменяемым и устанавливает 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.
Masionobe, L. 2003. Drawing an elliptical arc using polylines, quadratic or cubic Bezier curves.
- classmethod
circle(center=(0.0, 0.0), radius=1.0, readonly=False)[source] -
Возвращает
Path, представляющий окружность заданного радиуса и центра.Параметры: - center(float, float), по умолчанию: (0, 0)
-
Центр окружности.
- radiusfloat, по умолчанию: 1
-
Радиус окружности.
- readonlybool
-
Указывает, должен ли созданный путь иметь аргумент "только для чтения" при создании экземпляра Path.
Примечания
Окружность аппроксимируется с помощью 8 кубических кривых Безье, как описано в
Lancaster, Don. Approximating a Circle or an Ellipse Using Four Bezier Cubic Splines.
-
cleaned(transform=None, remove_nans=False, clip=None, quantize=<deprecated parameter>, simplify=False, curves=False, stroke_width=1.0, snap=False, sketch=None)[source] -
Возвращает новый путь с очищенными вершинами и кодами в соответствии с параметрами.
См. также
Path.iter_segments- для получения подробностей о ключевых аргументах.
-
clip_to_bbox(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(path, transform=None)[source] -
Возвращает, полностью ли данная (замкнутая) траектория содержит заданную траекторию.
Если transform не
None, траектория будет преобразована перед проверкой на включение.
-
contains_point(point, transform=None, radius=0.0)[source] -
Возвращает, содержит ли область, ограниченная траекторией, заданную точку.
Траектория всегда обрабатывается как замкнутая; т.е. если последний код не CLOSEPOLY, предполагается неявный отрезок, соединяющий последнюю вершину с первой вершиной.
Параметры: - point(float, float)
-
Точка (x, y) для проверки.
-
transform
matplotlib.transforms.Transform, необязательно -
Если не
None, point будет сравниваться сself, преобразованной с помощью transform; т.е. для правильной проверки transform должен преобразовать траекторию в систему координат point. - radiusfloat, по умолчанию: 0
-
Добавляет дополнительный отступ к траектории в координатах point. Траектория расширяется касательно на radius/2; т.е. если вы нарисуете траекторию с шириной линии radius, все точки на линии по-прежнему будут считаться находящимися внутри области. И наоборот, отрицательные значения уменьшают область: точки на воображаемой линии будут считаться вне области.
Возвращает: - bool
Примечания
У текущего алгоритма есть некоторые ограничения:
- Результат не определен для точек, находящихся точно на границе (т.е. на траектории, смещенной на radius/2).
- Результат не определен, если нет замкнутой области, т.е. все вершины находятся на прямой линии.
- Если ограничивающие линии начинают пересекаться из-за смещения radius, результат не гарантируется.
-
contains_points(points, transform=None, radius=0.0)[source] -
Возвращает, содержит ли область, ограниченная траекторией, заданные точки.
Траектория всегда обрабатывается как замкнутая; т.е. если последний код не CLOSEPOLY, предполагается неявный отрезок, соединяющий последнюю вершину с первой вершиной.
Параметры: - points(N, 2) массив
-
Точки для проверки. Столбцы содержат значения x и y.
-
transform
matplotlib.transforms.Transform, необязательно -
Если не
None, points будут сравниваться сself, преобразованной с помощью transform; т.е. для правильной проверки transform должен преобразовать траекторию в систему координат points. - radiusfloat, по умолчанию: 0
-
Добавляет дополнительный отступ к траектории в координатах points. Траектория расширяется касательно на radius/2; т.е. если вы нарисуете траекторию с шириной линии radius, все точки на линии по-прежнему будут считаться находящимися внутри области. И наоборот, отрицательные значения уменьшают область: точки на воображаемой линии будут считаться вне области.
Возвращает: - массив bool длины N
Примечания
У текущего алгоритма есть некоторые ограничения:
- Результат не определен для точек, находящихся точно на границе (т.е. на траектории, смещенной на radius/2).
- Результат не определен, если нет замкнутой области, т.е. все вершины находятся на прямой линии.
- Если ограничивающие линии начинают пересекаться из-за смещения radius, результат не гарантируется.
-
copy() -
Возвращает поверхностную копию
Path, которая будет использовать вершины и коды из исходнойPath.
-
deepcopy(memo=None) -
Возвращает глубокую копию
Path.Pathне будет только для чтения, даже если исходнаяPathтаковая.
-
get_extents(transform=None, **kwargs)[source] -
Получение Bbox траектории.
Параметры: - transformmatplotlib.transforms.Transform, необязательно
-
Преобразование, применяемое к траектории перед вычислением границ, если таковое имеется.
- **kwargs
-
Передаются в
iter_bezier.
Возвращает: - matplotlib.transforms.Bbox
-
Границы траектории Bbox([[xmin, ymin], [xmax, ymax]])
- статический
hatch(hatchpattern, density=6)[source] -
При заданном спецификаторе штриховки, hatchpattern, генерирует траекторию, которая может использоваться в повторяющемся узоре штриховки. density — число линий на единицу площади.
-
interpolated(steps)[source] -
Возвращает новую траекторию, повторно сэмплированную до длины N x steps.
Коды, отличные от LINETO, не обрабатываются корректно.
- свойство
-
intersects_bbox(bbox, filled=True)[source] -
Возвращает, пересекает ли этот путь заданный
Bbox.Если filled равно True, то это также возвращает True, если путь полностью включает в себя
Bbox(т.е., путь рассматривается как заполненный).Прямоугольник всегда считается заполненным.
-
intersects_path(other, filled=True)[source] -
Возвращает, пересекается ли этот путь с другим заданным путем.
Если filled равно True, то это также возвращает True, если один путь полностью включает в себя другой (т.е., пути рассматриваются как заполненные).
-
iter_bezier(**kwargs)[source] -
Перебирает каждую кривую Безье (включая линии) в пути.
Параметры: - **kwargs
-
Передаётся в
iter_segments.
Возвращает: - Bmatplotlib.bezier.BezierSegment
-
Кривые Безье, которые составляют текущий путь. Обратите особое внимание на то, что свободные точки являются кривыми Безье порядка 0, а линии — кривыми Безье порядка 1 (с двумя опорными точками).
- codePath.code_type
-
Код, описывающий тип возвращаемой кривой. Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE4 соответствуют кривым Безье с 1, 2, 3 и 4 опорными точками (соответственно). Path.CLOSEPOLY — это Path.LINETO с опорными точками, правильно выбранными на основе начальных/конечных точек текущей линии.
-
iter_segments(transform=None, remove_nans=True, clip=None, snap=False, stroke_width=1.0, simplify=None, curves=True, sketch=None)[source] -
Перебирает все сегменты кривых в пути.
В каждом цикле возвращается пара
(vertices, code), гдеvertices— последовательность из 1–3 пар координат, аcode— кодPath.Кроме того, этот метод может предоставить ряд стандартных очисток и преобразований пути.
Параметры: -
transformNone или
Transform -
Если не None, данное аффинное преобразование будет применено к пути.
- remove_nansbool, необязательно
-
Удалять ли все NaN из пути и пропускать их с помощью команд MOVETO.
- clipNone или (float, float, float, float), необязательно
-
Если не None, должно быть четвёркой (x1, y1, x2, y2), определяющей прямоугольник, в котором необходимо обрезать путь.
- snapNone или bool, необязательно
-
Если True, все узлы будут привязаны к пикселям; если False, они не будут привязаны. Если None, привязываются, если путь содержит только сегменты, параллельные осям x или y, и не более 1024 сегментов.
- stroke_widthfloat, необязательно
-
Ширина линии, рисуемой по пути (используется для привязки к пикселям).
- simplifyNone или bool, необязательно
-
Упрощать ли путь, удаляя вершины, не влияющие на его вид. Если None, использовать атрибут
should_simplify. См. такжеrcParams["path.simplify"](по умолчаниюTrue) иrcParams["path.simplify_threshold"](по умолчанию0.111111111111). - curvesbool, необязательно
-
Если True, сегменты кривых будут возвращаться как сегменты кривых. Если False, все кривые будут преобразованы в сегменты прямых.
- sketchNone или последовательность, необязательно
-
Если не None, должно быть кортежем из 3 элементов вида (scale, length, randomness), представляющим параметры построения эскиза.
-
transformNone или
- classmethod
make_compound_path(*args)[source] -
Создаёт составной путь из списка объектов Path. Бездумно удаляет все точки управления Path.STOP.
- classmethod
make_compound_path_from_polys(XY)[source] -
Создаёт объект составного пути для рисования нескольких многоугольников с одинаковым числом сторон. XY — это массив NumPy (numpolys x numsides x 2) вершин. Возвращаемый объект —
Path(Исходный код, png, pdf)
- property
should_simplify -
True, если массив вершин должен быть упрощён.
- property
simplify_threshold -
Доля различия в пикселях, ниже которой вершины будут упрощаться.
-
-
to_polygons(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(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для единичной регулярной звездочки с заданным numVertices и радиусом 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для единичной регулярной звезды с заданным numVertices и радиусом 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, возвращает рамки, которые охватывают все их.Параметры: Примечания
Способ объединения paths, transforms и offsets соответствует тому же методу, что и для коллекций: каждый обрабатывается независимо, поэтому, если у вас есть 3 пути, 2 преобразования и 1 смещение, их комбинации следующие:
(A, A, A), (B, B, A), (C, A, A)
© 2012–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.4.3/api/path_api.html