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: 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 не должны напрямую обращаться к массивам вершин и кодов. Вместо этого они должны использовать
iter_segments()илиcleaned()для получения пар вершина/код. Это важно, так как многие объектыPath, в целях оптимизации, не хранят codes, но имеют значение по умолчанию, предоставленное имiter_segments().Некоторые свойства объектов Path можно настроить с помощью rcParams. См. rcParams, ключи которых содержат 'path.'.
Примечание
Массивы вершин и кодов должны рассматриваться как неизменяемые — в конструкторе сразу выполняется ряд оптимизаций и предположений, которые не изменятся при изменении данных.
Создает новый путь с заданными вершинами и кодами.
Параметры: -
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} -
Словарь, сопоставляющий коды пути с количеством вершин, которое ожидает код.
-
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(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если массив вершин содержит бесконечные значения.
-
classmethod hatch(hatchpattern, density=6)[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] -
Итерируется по всем сегментам кривой в пути. На каждой итерации возвращает кортеж из 2 элементов (vertices, code), где vertices — последовательность пар координат от 1 до 3, а code — один из кодов
Path.Кроме того, этот метод может предоставить ряд стандартных очисток и преобразований пути.
Параметры: -
transform : None or Transform instance -
Если не None, заданное аффинное преобразование будет применено к пути.
-
remove_nans : {False, True}, optional -
Если True, удалит все NaNs из пути и вставит команды 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, используется переменная-член should_simplify. См. также rcParams path.simplify и path.simplify_threshold.
-
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 - это (numpolys x numsides x 2) массив numpy вершин. Возвращаемый объект -
Path(Исходный код, png, pdf)
-
should_simplify -
Trueесли массив вершин должен быть упрощен.
-
simplify_threshold -
Доля разницы в пикселях, ниже которой вершины будут упрощены.
-
to_polygons(transform=None, width=0, height=0, closed_only=True)[source] -
Преобразует этот путь в список многоугольников или ломаных линий. Каждый многоугольник/ломаная линия — это Nx2 массив вершин. Другими словами, каждый многоугольник не содержит инструкций или кривых. Это полезно для отображения в бэкендах, которые не поддерживают составные пути или кривые Безье, таких как GDK.
Если 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единичного правильного звездочки с заданным 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).
-
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/2.2.3/api/path_api.html