path
matplotlib.path
Модуль для работы с ломаными линиями, используемыми во всем matplotlib.
Основной класс для обработки ломаных линий в matplotlib — Path. Практически все векторное рисование использует Paths где-то в процессе отрисовки.
Хотя сам экземпляр Path не может быть нарисован, существуют подклассы Artist, которые можно использовать для удобного визуализации Path — два наиболее часто используемых из них — PathPatch и PathCollection.
-
class matplotlib.path.Path(vertices, codes=None, _interpolation_steps=1, closed=False, readonly=False) -
Bases:
objectPathпредставляет собой серию, возможно, несвязанных, возможно, замкнутых отрезков линий и кривых.- В основе хранилища лежат две параллельные массивы numpy:
-
- vertices: массив float Nx2 вершин
- codes: массив uint8 длины N типов вершин
Эти два массива всегда имеют одинаковую длину в первом измерении. Например, чтобы представить кубическую кривую, вы должны предоставить три вершины и три кода
CURVE3.Типы кодов:
-
-
STOP : 1 вершина (игнорируется) -
Маркер конца всего пути (в настоящее время не требуется и игнорируется)
-
-
-
MOVETO : 1 вершина -
Поднять перо и переместиться в заданную вершину.
-
-
-
LINETO : 1 вершина -
Нарисовать линию от текущей позиции до заданной вершины.
-
-
-
CURVE3 : 1 контрольная точка, 1 конечная точка -
Нарисовать квадратичную кривую Безье от текущей позиции, с заданной контрольной точкой до заданной конечной точки.
-
-
-
CURVE4 : 2 контрольных точки, 1 конечная точка -
Нарисовать кубическую кривую Безье от текущей позиции, с заданными контрольными точками до заданной конечной точки.
-
-
-
CLOSEPOLY : 1 вершина (игнорируется) -
Нарисовать отрезок линии до начальной точки текущей ломаной.
-
Пользователи объектов Path не должны напрямую обращаться к массивам вершин и кодов. Вместо этого они должны использовать
iter_segments()илиcleaned(), чтобы получить пары вершина/код. Это важно, так как многие объектыPath, в целях оптимизации, не хранят codes вообще, но имеют значения по умолчанию, предоставляемыеiter_segments().Примечание
Массивы вершин и кодов следует рассматривать как неизменяемые — в конструкторе сделано много оптимизаций и предположений, которые не изменятся при изменении данных.
Создайте новый путь с заданными вершинами и кодами.
Параметры: vertices : array_like
Массив 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) -
Возвращает дугу по единичной окружности от угла theta1 до угла theta2 (в градусах).
Если n задано, это число сегментов сплайна. Если n не задано, число сегментов сплайна определяется на основе разницы между theta1 и theta2.
Masionobe, L. 2003. Отрисовка эллиптической дуги с помощью ломаных, квадратичных или кубических кривых Безье.
-
classmethod circle(center=(0.0, 0.0), radius=1.0, readonly=False) -
Возвращает объект Path, представляющий окружность заданного радиуса и центра.
Параметры: center : пара чисел с плавающей точкой
Центр окружности. Значение по умолчанию
(0, 0).radius : float
Радиус окружности. По умолчанию 1.
readonly : bool
Указывает, должно ли создаваемый путь иметь аргумент «readonly» при создании объекта 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) -
Очищает путь в соответствии с параметрами, возвращая новый объект Path.
См. также
См.
iter_segments()для подробностей об именованных аргументах.Возвращает: Объект Path с очищенными вершинами и кодами.
-
clip_to_bbox(bbox, inside=True) -
Обрезает путь до заданной области.
Путь должен состоять из одного или нескольких замкнутых многоугольников. Этот алгоритм не будет работать правильно для незамкнутых путей.
Если inside
True, обрезать до внутренности рамки, иначе — до внешности рамки.
-
code_type -
псевдоним
uint8
-
codes -
Список кодов в
Pathкак одномерный массив numpy. Каждый код — это один изSTOP,MOVETO,LINETO,CURVE3,CURVE4илиCLOSEPOLY. Для кодов, соответствующих более чем одной вершине (CURVE3иCURVE4), код будет повторяться, так что длинаself.verticesиself.codesвсегда будет одинаковой.
-
contains_path(path, transform=None) -
Возвращает True, если этот путь полностью содержит заданный путь.
Если transform не None, путь будет преобразован перед выполнением проверки.
-
contains_point(point, transform=None, radius=0.0) -
Возвращает True, если путь содержит заданную точку.
Если transform не None, путь будет преобразован перед выполнением проверки.
radius позволяет немного увеличить или уменьшить путь.
-
contains_points(points, transform=None, radius=0.0) -
Возвращает массив bool, который равен True, если путь содержит соответствующую точку.
Если transform не None, путь будет преобразован перед выполнением проверки.
radius позволяет немного увеличить или уменьшить путь.
-
copy() -
Возвращает поверхностную копию
Path, которая будет совместно использовать вершины и коды с исходнымPath.
-
deepcopy() -
Возвращает глубокую копию
Path.Pathне будет только для чтения, даже если исходныйPathтаковой является.
-
get_extents(transform=None) -
Возвращает пределы (xmin, ymin, xmax, ymax) пути.
В отличие от вычисления пределов только по вершинам, этот алгоритм учтет кривые и должным образом обработает контрольные точки.
-
has_nonfinite -
Trueесли массив вершин содержит бесконечные значения.
-
classmethod hatch(hatchpattern, density=6) -
При заданном спецификаторе штриховки, hatchpattern, генерирует Path, который можно использовать в повторяющемся узоре штриховки. density — количество линий на единицу площади.
-
interpolated(steps) -
Возвращает новый путь, повторно сэмплированный до длины N x steps. В настоящее время не поддерживает интерполяцию кривых.
-
intersects_bbox(bbox, filled=True) -
Возвращает True, если этот путь пересекает заданный
Bbox.filled, если равно True, рассматривает путь как заполненный. То есть, если один путь полностью охватывает другой,
intersects_path()вернёт True.
-
intersects_path(other, filled=True) -
Возвращает 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) -
Итерируется по всем сегментам кривых в пути. Каждая итерация возвращает кортеж из 2-х элементов (vertices, code), где vertices — последовательность из 1 - 3 пар координат, а code — один из кодов
Path.Кроме того, этот метод может предоставить ряд стандартных очисток и преобразований пути.
Параметры: transform : None или
TransformэкземплярЕсли не None, заданная аффинная трансформация будет применена к пути.
remove_nans : {False, True}, необязательно
Если True, удалит все NaN из пути и вставит команды MOVETO, чтобы пропустить их.
clip : None или последовательность, необязательно
Если не None, должен быть четырёхэлементным кортежем (x1, y1, x2, y2), определяющим прямоугольник, в котором должен быть обрезан путь.
snap : None или bool, необязательно
Если None, автоматически привязывается к пикселям, чтобы уменьшить размытость прямолинейных линий. Если True, принудительно использовать привязку, если False, не использовать.
stroke_width : float, необязательно
- Ширина мазка, который рисуется. Необходимо
-
как подсказка для алгоритма привязки.
simplify : None или bool, необязательно
- Если True, выполнит упрощение, чтобы удалить
-
вершины, которые не влияют на внешний вид пути. Если False, не выполнять упрощение. Если None, использовать переменную member should_simplify.
curves : {True, False}, необязательно
Если True, сегменты кривых будут возвращены как сегменты кривых. Если False, все кривые будут преобразованы в отрезки прямых.
sketch : None или последовательность, необязательно
Если не None, должен быть кортежем из 3-х элементов вида (scale, length, randomness), представляющим параметры наброска.
-
classmethod make_compound_path(*args) -
Создаёт составной путь из списка объектов Path.
-
classmethod make_compound_path_from_polys(XY) -
Создаёт объект составного пути для рисования нескольких многоугольников с одинаковым количеством сторон. XY — это массив NumPy (numpolys x numsides x 2) вершин. Возвращаемый объект —
Path.(Исходный код, png, hires.png, pdf)
-
readonly -
TrueеслиPathявляется только для чтения.
-
should_simplify -
Trueесли массив вершин должен быть упрощен.
-
simplify_threshold -
Доля разницы пикселей, ниже которой вершины будут упрощены.
-
to_polygons(transform=None, width=0, height=0) -
Преобразует этот путь в список многоугольников. Каждый многоугольник — массив Nx2 вершин. Другими словами, каждый многоугольник не содержит инструкций или кривых
MOVETO. Это полезно для отображения в бэкендах, которые не поддерживают составные пути или кривые Безье, такие как GDK.Если width и height оба ненулевые, линии будут упрощены, так что вершины за пределами (0, 0), (width, height) будут обрезанны.
-
transformed(transform) -
Возвращает преобразованную копию пути.
См. также
-
matplotlib.transforms.TransformedPath - Специализированный класс пути, который кэширует преобразованный результат и автоматически обновляется при изменении преобразования.
-
-
classmethod unit_circle() -
Возвращает неизменяемый
Pathединичной окружности.В большинстве случаев
Path.circle()будет тем, что вам нужно.
-
classmethod unit_circle_righthalf() -
Возвращает
Lancaster, Don. Approximating a Circle or an Ellipse Using Four Bezier Cubic Splines.Pathправой половины единичной окружности. Окружность аппроксимируется кубическими кривыми Безье. Используется 4 сплайна вокруг окружности, используя подход, представленный здесь:
-
classmethod unit_rectangle() -
Возвращает экземпляр
Pathединичного прямоугольника от (0, 0) до (1, 1).
-
classmethod unit_regular_asterisk(numVertices) -
Возвращает
Pathдля единичной правильной звездочки с заданным numVertices и радиусом 1.0, центрированной в (0, 0).
-
classmethod unit_regular_polygon(numVertices) -
Возвращает экземпляр
Pathдля единичного правильного многоугольника с заданным numVertices и радиусом 1.0, центрированного в (0, 0).
-
classmethod unit_regular_star(numVertices, innerCircle=0.5) -
Возвращает
Pathдля единичной правильной звезды с заданным numVertices и радиусом 1.0, центрированной в (0, 0).
-
vertices -
Список вершин в
Pathв виде массива NumPy Nx2.
-
classmethod wedge(theta1, theta2, n=None) -
Возвращает сектор единичной окружности от угла theta1 до угла theta2 (в градусах).
Если n задано, это количество сегментов сплайна. Если n не задано, количество сегментов сплайна определяется на основе разницы между theta1 и theta2.
-
-
matplotlib.path.get_path_collection_extents(master_transform, paths, transforms, offsets, offset_transform) -
Принимая последовательность объектов
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=[]) -
Принимая последовательность объектов
Pathи необязательные объектыTransform, возвращает рамку, охватывающую все эти элементы.paths — последовательность экземпляров
Path.transforms — необязательная последовательность экземпляров
Affine2Dдля применения к каждому пути.
© 2012–2016 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
http://matplotlib.org/1.5.3/api/path_api.html