path
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]
-
Основания:
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.'.
Примечание
Массивы vertices и codes следует рассматривать как неизменяемые — в конструкторе с самого начала сделано множество оптимизаций и предположений, которые не изменятся при изменении данных.
Создает новый путь с заданными вершинами и кодами.
Параметры: -
vertices : array_like -
Массив с плавающей точкой, массив с маской или последовательность пар, представляющие вершины пути.
Если 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] -
Возвращает путь, представляющий окружность с заданным радиусом и центром.
Параметры: -
center : pair of floats -
Центр окружности. Значение по умолчанию
(0, 0). -
radius : float -
Радиус окружности. По умолчанию 1.
-
readonly : bool -
Указывает, должен ли созданный путь иметь аргумент «только для чтения» при создании объекта Path.
Примечания
Окружность аппроксимируется с помощью кубических кривых Безье. Используются 8 сплайнов вокруг окружности, используя подход, представленный здесь:
Lancaster, Don. Аппроксимация окружности или эллипса с помощью четырех кубических сплайнов Безье. -
-
cleaned(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()для получения подробностей об именованных аргументах.Возвращает: - Экземпляр Path с очищенными вершинами и кодами.
-
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] -
Возвращает, содержит ли (замкнутый) путь заданную точку.
Если transform не
None, путь будет преобразован перед выполнением проверки.radius позволяет немного увеличить или уменьшить путь.
-
contains_points(points, transform=None, radius=0.0)[source] -
Возвращает массив булевых значений, который
Trueесли (замкнутый) путь содержит соответствующую точку.Если transform не
None, путь будет преобразован перед выполнением проверки.radius позволяет немного увеличить или уменьшить путь.
-
copy() -
Возвращает поверхностную копию
Path, которая будет использовать те же вершины и коды, что и исходныйPath.
-
deepcopy(memo=None) -
Возвращает глубокую копию
Path.Pathне будет только для чтения, даже если исходныйPathявляется таковым.
-
get_extents(transform=None)[source] -
Возвращает пределы (xmin, ymin, xmax, ymax) пути.
В отличие от вычисления пределов только по вершинам, этот алгоритм учтёт кривые и правильно обработает контрольные точки.
-
has_nonfinite -
Trueесли массив вершин содержит значения, не являющиеся конечными.
-
hatch[source] -
При заданном спецификаторе штриховки, hatchpattern, генерирует путь, который может быть использован в повторяющемся рисунке штриховки. density — количество линий на единицу площади.
-
interpolated(steps)[source] -
Возвращает новый путь, пересэмплированный до длины N x steps. В настоящее время не обрабатывает интерполяцию кривых.
-
intersects_bbox(bbox, filled=True)[source] -
Возвращает True, если этот путь пересекает заданную
Bbox.filled, когда True, рассматривает путь как заполненный. То есть, если путь полностью охватывает прямоугольник,
intersects_bbox()вернёт True.Прямоугольник всегда рассматривается как заполненный.
-
intersects_path(other, filled=True)[source] -
Возвращает 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)[source] -
Итерируется по всем сегментам кривых в пути. Каждая итерация возвращает пару (vertices, code), где vertices — последовательность из 1—3 пар координат, а code — один из кодов
Path.Кроме того, этот метод может предоставить ряд стандартных очисток и преобразований для пути.
Параметры: -
transform : None or Transform instance -
Если не None, данное аффинное преобразование будет применено к пути.
-
remove_nans : {False, True}, optional -
Если True, будут удалены все NaN из пути и вставлены команды MOVETO, чтобы пропустить их.
-
clip : None or sequence, optional -
Если не None, должен быть четырёхэлементным кортежем (x1, y1, x2, y2), определяющим прямоугольник для обрезки пути.
-
snap : None or bool, optional -
Если None, автоматическое привязка к пикселям для уменьшения размытия прямолинейных линий. Если True, привязка принудительна, а если False — нет.
-
stroke_width : float, optional -
- Ширина линии, которая рисуется. Необходима
-
как подсказка для алгоритма привязки.
-
simplify : None or bool, optional -
- Если True, выполняется упрощение, чтобы удалить
-
вершины, которые не влияют на внешний вид пути. Если False, упрощение не выполняется. Если None, используется переменная member variable should_simplify. Также см. path.simplify и path.simplify_threshold в rcParams.
-
curves : {True, False}, 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(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] -
Возвращает
Lancaster, Don. Approximating a Circle or an Ellipse Using Four Bezier Cubic Splines.Pathправую половину единичной окружности. Окружность аппроксимируется кубическими кривыми Безье. Используются 4 сплайна, приближающие окружность, по методу, представленному здесь:
-
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в виде Nx2 массива numpy.
-
classmethod wedge(theta1, theta2, n=None)[source] -
Возвращает сектор единичной окружности от угла 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)[source] -
Для последовательности объектов
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=[])[source] -
Для последовательности объектов
Pathи необязательных объектовTransformвозвращает рамку, охватывающую все.paths — последовательность экземпляров
Path.transforms — необязательная последовательность экземпляров
Affine2Dдля применения к каждому пути.
© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.0.0/api/path_api.html