преобразования
matplotlib.transforms
matplotlib включает в себя фреймворк для произвольных геометрических преобразований, который используется для определения окончательного положения всех элементов, нарисованных на холсте.
Преобразования объединяются в деревья объектов TransformNode, чьё фактическое значение зависит от их дочерних элементов. Когда содержимое дочерних элементов изменяется, их родительские элементы автоматически делают недействительными. В следующий раз, когда обращаются к недействительному преобразованию, оно пересчитывается, чтобы отразить эти изменения. Этот подход недействительности/кеширования предотвращает ненужные пересчёты преобразований и способствует улучшению производительности в интерактивном режиме.
Например, вот граф дерева преобразований, используемого для отображения данных на графике:
Этот фреймворк можно использовать как для аффинных, так и для неаффинных преобразований. Однако для скорости мы хотим использовать бэкенд-рендереры для выполнения аффинных преобразований, когда это возможно. Поэтому можно выполнить только аффинную или неаффинную часть преобразования на наборе данных. Аффинное преобразование всегда предполагается после неаффинного. Для любого преобразования:
full transform == non-affine part + affine part
Бэкенды не должны обрабатывать неаффинные преобразования самостоятельно.
-
class matplotlib.transforms.Affine2D(matrix=None, **kwargs)[source] -
Bases:
matplotlib.transforms.Affine2DBaseИзменяемая 2D аффинная трансформация.
Инициализировать аффинную трансформацию из 3x3 массива numpy с плавающей точкой:
a c e b d f 0 0 1
Если matrix равно None, инициализировать с тождественной трансформацией.
-
clear()[source] -
Сбросить базовую матрицу на тождественную трансформацию.
-
static from_values(a, b, c, d, e, f)[source] -
(статический метод) Создать новый экземпляр Affine2D из заданных значений:
a c e b d f 0 0 1
.
-
get_matrix()[source] -
Получить базовую матрицу преобразования как 3x3 массив numpy:
a c e b d f 0 0 1
.
-
static identity()[source] -
(статический метод) Возвращает новый объект
Affine2D, который является тождественным преобразованием.Если эта трансформация не будет изменяться позже, рассмотрите использование более быстрого класса
IdentityTransformвместо него.
-
is_separable
-
rotate(theta)[source] -
Добавить поворот (в радианах) к этому преобразованию на месте.
Возвращает self, поэтому этот метод легко можно комбинировать с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
rotate_around(x, y, theta)[source] -
Добавить поворот (в радианах) вокруг точки (x, y) на месте.
Возвращает self, поэтому этот метод легко можно комбинировать с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
rotate_deg(degrees)[source] -
Добавить поворот (в градусах) к этому преобразованию на месте.
Возвращает self, поэтому этот метод легко можно комбинировать с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
rotate_deg_around(x, y, degrees)[source] -
Добавить поворот (в градусах) вокруг точки (x, y) на месте.
Возвращает self, поэтому этот метод легко можно комбинировать с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
scale(sx, sy=None)[source] -
Добавляет масштабирование на месте.
Если sy равно None, то же масштабирование применяется как в x-, так и в y-направлениях.
Возвращает self, поэтому этот метод легко можно комбинировать с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
set(other)[source] -
Установить это преобразование из замороженной копии другого объекта
Affine2DBase.
-
set_matrix(mtx)[source] -
Установить базовую матрицу преобразования из 3x3 массива numpy:
a c e b d f 0 0 1
.
-
skew(xShear, yShear)[source] -
Добавить сдвиг на месте.
xShear и yShear — углы сдвига вдоль осей x и y соответственно в радианах.
Возвращает self, поэтому этот метод легко можно комбинировать с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
skew_deg(xShear, yShear)[source] -
Добавить сдвиг на месте.
xShear и yShear — углы сдвига вдоль осей x и y соответственно в градусах.
Возвращает self, поэтому этот метод легко можно комбинировать с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
-
translate(tx, ty)[source] -
Добавляет сдвиг на месте.
Возвращает self, поэтому этот метод можно легко объединить с другими вызовами
rotate(),rotate_deg(),translate()иscale().
-
-
class matplotlib.transforms.Affine2DBase(*args, **kwargs)[source] -
Базовый класс всех 2D аффинных преобразований.
2D аффинные преобразования выполняются с использованием 3x3 массива numpy:
a c e b d f 0 0 1
Этот класс предоставляет интерфейс только для чтения. Для изменяемого 2D аффинного преобразования используйте
Affine2D.Подклассы этого класса, как правило, должны будут переопределять конструктор и
get_matrix()для генерации пользовательской 3x3 матрицы.-
frozen()[source] -
Возвращает замороженную копию этого преобразователя. Замороженная копия не будет обновляться при изменении ее дочерних элементов. Полезно для хранения ранее известного состояния преобразования, где
copy.deepcopy()может обычно использоваться.
-
has_inverse = True
-
input_dims = 2
-
inverted()[source] -
Возвращает соответствующее обратное преобразование.
Результат работы этого метода следует рассматривать как временный. Обновление self не приводит к соответствующему обновлению его инвертированной копии.
x === self.inverted().transform(self.transform(x))
-
is_separable
-
static matrix_from_values(a, b, c, d, e, f)[source] -
(staticmethod) Создает новую матрицу преобразования как 3x3 массив numpy в форме:
a c e b d f 0 0 1
-
output_dims = 2
-
to_values()[source] -
Возвращает значения матрицы в виде последовательности (a,b,c,d,e,f)
-
transform_affine(points)[source] -
Выполняет только аффинную часть этого преобразования над заданным массивом значений.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это, как правило, пустая операция. В аффинных преобразованиях это эквивалентно
transform(values).Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_point(point)[source] -
Удобная функция, которая возвращает преобразованную копию одной точки.
Точка задается как последовательность длиной
input_dims. Преобразованная точка возвращается как последовательность длинойoutput_dims.
-
-
class matplotlib.transforms.AffineBase(*args, **kwargs)[source] -
Базовый класс всех аффинных преобразований любого числа измерений.
-
get_affine()[source] -
Получить аффинную часть этого преобразования.
-
is_affine = True
-
transform(values)[source] -
Выполняет преобразование над заданным массивом значений.
Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_affine(values)[source] -
Выполняет только аффинную часть этого преобразования над заданным массивом значений.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это, как правило, пустая операция. В аффинных преобразованиях это эквивалентно
transform(values).Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_non_affine(points)[source] -
Выполняет только неаффинную часть преобразования.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это, как правило, эквивалентно
transform(values). В аффинных преобразованиях это всегда пустая операция.Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_path(path)Pathinstance.В некоторых случаях это преобразование может вставлять кривые в путь, который начинался как отрезки прямых.
-
-
transform_path_affine(path)Pathinstance.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
transform_path_non_affine(path)Pathinstance.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
class matplotlib.transforms.Bbox(points, **kwargs)[source] -
Bases:
matplotlib.transforms.BboxBaseИзменяемый прямоугольник.
Параметры: -
points : ndarray -
Двумерный массив numpy размером 2x2 вида
[[x0, y0], [x1, y1]].
Примечания
Если вам нужно создать объект
Bboxиз других данных, воспользуйтесь статическими методамиunit(),from_bounds()иfrom_extents().-
static from_bounds(x0, y0, width, height)[source] -
(статический метод) Создаёт новый прямоугольник
Bboxпо значениям x0, y0, width и height.width и height могут быть отрицательными.
-
static from_extents(*args)[source] -
(статический метод) Создаёт новый прямоугольник из значений left, bottom, right и top.
Значения по оси y возрастают вверх.
-
get_points()[source] -
Получить точки прямоугольника напрямую в виде массива numpy:
[[x0, y0], [x1, y1]].
-
ignore(value)[source] -
Установить, игнорировать ли существующие границы прямоугольника в последующих вызовах
update_from_data_xy().-
value : bool -
- Когда
True, последующие вызовыupdate_from_data_xy()будут игнорировать существующие границы прямоугольникаBbox. - Когда
False, последующие вызовыupdate_from_data_xy()будут учитывать существующие границы прямоугольникаBbox.
- Когда
-
-
intervalx -
intervalx— пара координат x, определяющих прямоугольник. Не гарантируется, что они отсортированы слева направо.
-
intervaly -
intervaly— пара координат y, определяющих прямоугольник. Не гарантируется, что они отсортированы снизу вверх.
-
minpos
-
minposx
-
minposy
-
mutated()[source] -
Возвращает, изменился ли прямоугольник с момента инициализации.
-
mutatedx()[source] -
Возвращает, изменились ли пределы по оси x с момента инициализации.
-
mutatedy()[source] -
Возвращает, изменились ли пределы по оси y с момента инициализации.
-
static null()[source] -
(статический метод) Создаёт пустой прямоугольник
Bboxот (inf, inf) до (-inf, -inf).
-
p0 -
p0— первая пара координат (x, y), определяющих прямоугольник. Не гарантируется, что это нижний левый угол. Для этого используйтеmin.
-
p1 -
p1— вторая пара координат (x, y), определяющих прямоугольник. Не гарантируется, что это верхний правый угол. Для этого используйтеmax.
-
set(other)[source] -
Установить прямоугольник из «замороженных» границ другого прямоугольника
Bbox.
-
set_points(points)[source] -
Установить точки прямоугольника напрямую из массива numpy вида:
[[x0, y0], [x1, y1]]. Проверка ошибок не выполняется, так как этот метод предназначен в основном для внутреннего использования.
-
static unit()[source] -
(статический метод) Создаёт единичный прямоугольник
Bboxот (0, 0) до (1, 1).
-
update_from_data_xy(xy, ignore=None, updatex=True, updatey=True)[source] -
Обновить границы прямоугольника
Bboxна основе переданных данных. После обновления, ширина и высота будут положительными; x0 и y0 будут минимальными значениями.Параметры:
-
-
update_from_path(path, ignore=None, updatex=True, updatey=True)[source] -
Обновление границ
Bboxна основе переданных данных. После обновления границы будут иметь положительную ширину и высоту; x0 и y0 будут минимальными значениями.Параметры:
-
x0 -
x0— первая из пары координат x, определяющих прямоугольник.x0не гарантированно меньшеx1. Если вам это требуется, используйтеxmin.
-
x1 -
x1— вторая из пары координат x, определяющих прямоугольник.x1не гарантированно большеx0. Если вам это требуется, используйтеxmax.
-
-
class matplotlib.transforms.BboxBase(shorthand_name=None)[source] -
Базовый класс всех прямоугольных областей, предоставляющий только для чтения доступ к данным. Изменяемая прямоугольная область предоставляется классом
Bbox.Каноническое представление — две точки без ограничений на их порядок. Предоставляются удобные свойства для получения левой, нижней, правой и верхней границ, а также ширины и высоты, но они не хранятся явно.
Создаёт новый
TransformNode.Параметры: -
shorthand_name : str -
Строка, представляющая "имя" преобразования. Имя не имеет никакого значения, кроме улучшения удобочитаемости
str(transform)при DEBUG=True.
-
anchored(c, container=None)[source] -
Возвращает копию
Bbox, сдвинутую в положение c внутри контейнера.Параметры: - c :
-
Может быть либо:
- Последовательность (cx, cy), где cx и cy изменяются от 0 до 1, где 0 — слева или снизу, а 1 — справа или сверху
- строка: - 'C' для центрирования - 'S' для центрирования по нижней стороне - 'SE' для левого нижнего угла - 'E' для левого края - и т. д.
-
container : Bbox, optional -
Прямоугольник, внутри которого позиционируется
Bbox; по умолчанию — исходныйBbox.
-
coefs = {'C': (0.5, 0.5), 'E': (1.0, 0.5), 'N': (0.5, 1.0), 'NE': (1.0, 1.0), 'NW': (0, 1.0), 'S': (0.5, 0), 'SE': (1.0, 0), 'SW': (0, 0), 'W': (0, 0.5)}
-
contains(x, y)[source] -
Возвращает, находится ли
(x, y)внутри прямоугольной области или на её границе.
-
corners()[source] -
Возвращает массив точек, являющихся четырьмя углами этого прямоугольника. Например, если эта
Bboxопределяется точками (a, b) и (c, d), тоcorners()возвращает (a, b), (a, d), (c, b) и (c, d).
-
count_contains(vertices)[source] -
Подсчитывает количество вершин, содержащихся в
Bbox. Вершины с нечисловыми значениями x или y игнорируются.Параметры: -
vertices : Nx2 Numpy array.
-
-
count_overlaps(bboxes)[source] -
Подсчитывает количество прямоугольных областей, которые перекрывают эту.
Параметры: -
bboxes : sequence of BboxBase objects
-
-
expanded(sw, sh)[source] -
Возвращает новую прямоугольную область, которая является этой прямоугольной областью, расширенной вокруг её центра на заданные множители sw и sh.
-
frozen()[source] -
TransformNode— базовый класс для всего, что участвует в дереве преобразований и должно аннулировать своих родителей или быть аннулированным. Это включает классы, которые фактически не являются преобразованиями, такие как прямоугольные области, поскольку некоторые преобразования зависят от прямоугольных областей для вычисления своих значений.
-
fully_contains(x, y)[source] -
Возвращает, полностью ли
x, yнаходится внутри прямоугольной области, но не на её границе.
-
-
fully_overlaps(other)[source] -
Возвращает значение, указывающее, перекрывается ли этот прямоугольник с другим прямоугольником, не включая края.
Параметры: -
other : BboxBase
-
-
get_points()[source]
-
static intersection(bbox1, bbox2)[source] -
Возвращает пересечение двух прямоугольников или None, если они не пересекаются.
-
intervalx -
intervalx— пара координат x, определяющих прямоугольник. Не гарантируется, что она отсортирована слева направо.
-
intervaly -
intervaly— пара координат y, определяющих прямоугольник. Не гарантируется, что она отсортирована снизу вверх.
-
inverse_transformed(transform)[source] -
Возвращает новый объект
Bbox, статически преобразованный с помощью обратного преобразования.
-
is_affine = True
-
is_bbox = True
-
is_unit()[source] -
Возвращает True, если
Bboxявляется единичным прямоугольником от (0, 0) до (1, 1).
-
max -
max— верхний правый угол прямоугольника.
-
min -
min— нижний левый угол прямоугольника.
-
overlaps(other)[source] -
Возвращает значение, указывающее, перекрывается ли этот прямоугольник с другим прямоугольником.
Параметры: -
other : BboxBase
-
-
p0 -
p0— первая пара координат (x, y), определяющих прямоугольник. Не гарантируется, что это нижний левый угол. Для этого используйтеmin.
-
p1 -
p1— вторая пара координат (x, y), определяющих прямоугольник. Не гарантируется, что это верхний правый угол. Для этого используйтеmax.
-
padded(p)[source] -
Возвращает новый
Bbox, с добавлением отступа по всем четырём сторонам на заданную величину.
-
rotated(radians)[source] -
Возвращает новый прямоугольник, ограничивающий повернутую версию этого прямоугольника на заданный угол в радианах. Новый прямоугольник по-прежнему выровнен с осями.
-
shrunk(mx, my)[source] -
Возвращает копию
Bbox, уменьшенную на коэффициент mx по оси x и на коэффициент my по оси y. Нижний левый угол прямоугольника остаётся неизменным. Обычно mx и my будут меньше 1, но это не проверяется.
-
shrunk_to_aspect(box_aspect, container=None, fig_aspect=1.0)[source] -
Возвращает копию
Bbox, уменьшенную до максимального размера при заданном соотношении сторон box_aspect. Если координаты прямоугольника относительны (например, доли от большего прямоугольника, такого как фигура), то физическое соотношение сторон этой фигуры задаётся с помощью fig_aspect, так что box_aspect также может быть задано как отношение абсолютных размеров, а не относительных.
-
splitx(*args)[source] -
например,
bbox.splitx(f1, f2, ...)Возвращает список новых объектов
Bbox, образованных путём разделения исходного прямоугольника вертикальными линиями в долях f1, f2 и т.д.
-
splity(*args)[source] -
например,
bbox.splitx(f1, f2, ...)Возвращает список новых объектов
Bbox, образованных путём разделения исходного прямоугольника горизонтальными линиями в долях f1, f2 и т.д.
-
transformed(transform)[source] -
Возвращает новый объект
Bbox, статически преобразованный с помощью данного преобразования.
-
translated(tx, ty)[source] -
Возвращает копию
Bbox, статически сдвинутую на tx и ty.
-
-
static union(bboxes)[source] -
Возвращает
Bbox, содержащий все заданные прямоугольные области.
-
x0 -
x0— первая из пары координат x, определяющих прямоугольную область.x0не гарантируется меньшеx1. Если это необходимо, используйтеxmin.
-
x1 -
x1— вторая из пары координат x, определяющих прямоугольную область.x1не гарантируется большеx0. Если это необходимо, используйтеxmax.
-
xmax -
xmax— правая граница прямоугольной области.
-
xmin -
xmin— левая граница прямоугольной области.
-
y0 -
y0— первая из пары координат y, определяющих прямоугольную область.y0не гарантируется меньшеy1. Если это необходимо, используйтеymin.
-
y1 -
y1— вторая из пары координат y, определяющих прямоугольную область.y1не гарантируется большеy0. Если это необходимо, используйтеymax.
-
ymax -
ymax— верхняя граница прямоугольной области.
-
ymin -
ymin— нижняя граница прямоугольной области.
-
-
class matplotlib.transforms.BboxTransform(boxin, boxout, **kwargs)[source] -
Bases:
matplotlib.transforms.Affine2DBaseBboxTransformлинейно преобразует точки из однойBboxв другуюBbox.Создаёт новый
BboxTransform, линейно преобразующий точки из boxin в boxout.-
get_matrix()[source] -
Получить массив преобразования Аффина для аффинной части этого преобразования.
-
is_separable = True
-
-
class matplotlib.transforms.BboxTransformFrom(boxin, **kwargs)[source] -
Bases:
matplotlib.transforms.Affine2DBaseBboxTransformFromлинейно преобразует точки из заданнойBboxв единичную прямоугольную область.-
get_matrix()[source] -
Получить массив преобразования Аффина для аффинной части этого преобразования.
-
is_separable = True
-
-
class matplotlib.transforms.BboxTransformTo(boxout, **kwargs)[source] -
Bases:
matplotlib.transforms.Affine2DBaseBboxTransformTo— преобразование, линейно преобразующее точки из единичной прямоугольной области в заданнуюBbox.Создаёт новый
BboxTransformTo, линейно преобразующий точки из единичной прямоугольной области в boxout.-
get_matrix()[source] -
Получить массив преобразования Аффина для аффинной части этого преобразования.
-
is_separable = True
-
-
class matplotlib.transforms.BboxTransformToMaxOnly(boxout, **kwargs)[source] -
Bases:
matplotlib.transforms.BboxTransformToBboxTransformTo— преобразование, линейно преобразующее точки из единичной прямоугольной области в заданнуюBboxс фиксированной верхней левой точкой (0, 0).Создаёт новый
BboxTransformTo, линейно преобразующий точки из единичной прямоугольной области в boxout.-
get_matrix()[source] -
Получить массив преобразования Аффина для аффинной части этого преобразования.
-
-
class matplotlib.transforms.BlendedAffine2D(x_transform, y_transform, **kwargs)[source] -
Основы:
matplotlib.transforms.Affine2DBase«Смешанное» преобразование использует одно преобразование для оси x и другое — для оси y.
Данная версия является оптимизацией для случая, когда оба дочерних преобразования являются типа
Affine2DBase.Создает новое «смешанное» преобразование, используя x_transform для преобразования оси x и y_transform для преобразования оси y.
И x_transform, и y_transform должны быть 2D-аффинными преобразованиями.
Обычно вы не будете вызывать этот конструктор напрямую, а воспользуетесь функцией
blended_transform_factory(), которая автоматически определит, какой тип смешанного преобразования создать.-
contains_branch_seperately(transform)[source] -
Возвращает, является ли данный фрагмент поддеревом этого преобразования на каждой отдельной оси.
Общее применение этого метода — определить, является ли преобразование смешанным преобразованием, содержащим преобразование данных осей. Например:
x_isdata, y_isdata = trans.contains_branch_seperately(ax.transData)
-
get_matrix()[source] -
Получить массив аффинного преобразования для аффинной части этого преобразования.
-
is_separable = True
-
-
class matplotlib.transforms.BlendedGenericTransform(x_transform, y_transform, **kwargs)[source] -
Основы:
matplotlib.transforms.Transform«Смешанное» преобразование использует одно преобразование для оси x и другое — для оси y.
Эта «обобщённая» версия может обрабатывать любое заданное дочернее преобразование по осям x и y.
Создаёт новое «смешанное» преобразование, используя x_transform для преобразования оси x и y_transform для преобразования оси y.
Обычно вы не будете вызывать этот конструктор напрямую, а воспользуетесь функцией
blended_transform_factory(), которая автоматически определит, какой тип смешанного преобразования создать.-
contains_branch(other)[source] -
Возвращает, является ли заданное преобразование поддеревом этого преобразования.
Этот метод использует равенство преобразований для идентификации поддеревьев, поэтому во многих ситуациях будет использоваться идентификатор объекта.
В случае, когда заданное преобразование представляет собой всё это преобразование, возвращает True.
-
contains_branch_seperately(transform)[source] -
Возвращает, является ли данный фрагмент поддеревом этого преобразования на каждой отдельной оси.
Общее применение этого метода — определить, является ли преобразование смешанным преобразованием, содержащим преобразование данных осей. Например:
x_isdata, y_isdata = trans.contains_branch_seperately(ax.transData)
-
depth -
Возвращает количество преобразований, которые были объединены для создания экземпляра этого преобразования.
Примечание
В случае составного преобразования возвращается максимальная глубина из двух.
-
frozen()[source] -
Возвращает замороженную копию узла этого преобразования. Замороженная копия не будет обновляться при изменении её дочерних элементов. Полезно для сохранения ранее известного состояния преобразования, когда
copy.deepcopy()может быть использован обычно.
-
get_affine()[source] -
Получить аффинную часть этого преобразования.
-
has_inverse
-
input_dims = 2
-
inverted()[source] -
Возвращает соответствующее обратное преобразование.
Значение, возвращаемое этим методом, должно рассматриваться как временное. Обновление self не вызывает соответствующего обновления его инвертированной копии.
x === self.inverted().transform(self.transform(x))
-
is_affine
-
is_separable = True
-
output_dims = 2
-
pass_through = True
-
transform_non_affine(points)[source] -
Выполняет только неаффинную часть преобразования.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это обычно эквивалентно
transform(values). В аффинных преобразованиях это всегда пустое действие.Принимает массив NumPy формы (N x
input_dims) и возвращает массив NumPy формы (N xoutput_dims).В качестве альтернативы, принимает массив NumPy длины
input_dimsи возвращает массив NumPy длиныoutput_dims.
-
-
class matplotlib.transforms.CompositeAffine2D(a, b, **kwargs)[source] -
Основы:
matplotlib.transforms.Affine2DBaseСоставное преобразование, сформированное путём применения преобразования a, а затем преобразования b.
Эта версия оптимизирована для случая, когда a и b являются 2D-аффинными.
Создаёт новое составное преобразование, являющееся результатом применения преобразования a, а затем преобразования b.
И a, и b должны быть экземплярами
Affine2DBase.Обычно вы не будете вызывать этот конструктор напрямую, а воспользуетесь функцией
composite_transform_factory(), которая автоматически выберет лучший тип экземпляра составного преобразования для создания.-
depth -
Возвращает количество преобразований, которые были объединены для создания экземпляра этого преобразования.
Примечание
В случае составного преобразования возвращается максимальная глубина из двух.
-
get_matrix()[source] -
Получить массив аффинного преобразования для аффинной части этого преобразования.
-
-
class matplotlib.transforms.CompositeGenericTransform(a, b, **kwargs)[source] -
Базы:
matplotlib.transforms.TransformСоставной преобразователь, образованный применением преобразования a, а затем преобразования b.
Этот «обобщённый» вариант может обрабатывать любые два произвольных преобразования.
Создаёт новый составной преобразователь, который является результатом применения преобразования a, а затем преобразования b.
Обычно вы не будете вызывать этот конструктор напрямую, а вместо этого воспользуетесь функцией
composite_transform_factory(), которая может автоматически выбрать лучший тип экземпляра составного преобразователя для создания.-
depth -
Возвращает количество преобразований, которые были объединены для формирования этого экземпляра преобразователя.
Примечание
В случае составного преобразователя возвращается максимальная глубина из двух.
-
frozen()[source] -
Возвращает замороженную копию этого преобразователя. Замороженная копия не будет обновляться при изменении ее дочерних элементов. Полезно для хранения ранее известного состояния преобразователя, где
copy.deepcopy()может обычно использоваться.
-
get_affine()[source] -
Получает аффинное преобразование этого преобразователя.
-
has_inverse
-
inverted()[source] -
Возвращает соответствующее обратное преобразование.
Значение, возвращаемое этим методом, следует рассматривать как временное. Обновление self не приводит к соответствующему обновлению его инвертированной копии.
x === self.inverted().transform(self.transform(x))
-
is_affine
-
is_separable
-
pass_through = True
-
transform_affine(points)[source] -
Выполняет только аффинное преобразование на заданном массиве значений.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это обычно нет операция. В аффинных преобразованиях это эквивалентно
transform(values).Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы, принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_non_affine(points)[source] -
Выполняет только неаффинное преобразование.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это обычно эквивалентно
transform(values). В аффинных преобразованиях это всегда нет операция.Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы, принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_path_non_affine(path)[source] -
Возвращает путь, преобразованный только неаффинной частью этого преобразования.
path: экземпляр
Path.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
-
class matplotlib.transforms.IdentityTransform(*args, **kwargs)[source] -
Базы:
matplotlib.transforms.Affine2DBaseСпециальный класс, который выполняет операцию тождественного преобразования быстрым способом.
-
frozen()[source] -
Возвращает замороженную копию этого преобразования. Замороженная копия не будет обновляться при изменении дочерних элементов. Полезно для сохранения ранее известного состояния преобразования, где
copy.deepcopy()обычно может быть использован.
-
get_affine()[source] -
Возвращает соответствующее обратное преобразование.
Результат этой функции следует рассматривать как временный. Обновление self не вызывает соответствующего обновления его инвертированной копии.
x === self.inverted().transform(self.transform(x))
-
get_matrix()[source] -
Получить массив аффинного преобразования для аффинной части этого преобразования.
-
inverted() -
Возвращает соответствующее обратное преобразование.
Результат этой функции следует рассматривать как временный. Обновление self не вызывает соответствующего обновления его инвертированной копии.
x === self.inverted().transform(self.transform(x))
-
transform(points)[source] -
Выполняет только неаффинную часть преобразования.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях, это, как правило, эквивалентно
transform(values). В аффинных преобразованиях, это всегда ничто.Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы, принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_affine(points) -
Выполняет только неаффинную часть преобразования.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях, это, как правило, эквивалентно
transform(values). В аффинных преобразованиях, это всегда ничто.Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы, принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_non_affine(points) -
Выполняет только неаффинную часть преобразования.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях, это, как правило, эквивалентно
transform(values). В аффинных преобразованиях, это всегда ничто.Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы, принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_path(path)[source] -
Возвращает путь, преобразованный только неаффинной частью этого преобразования.
path: экземпляр
Path.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
transform_path_affine(path) -
Возвращает путь, преобразованный только неаффинной частью этого преобразования.
path: экземпляр
Path.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
transform_path_non_affine(path) -
Возвращает путь, преобразованный только неаффинной частью этого преобразования.
path: экземпляр
Path.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
-
class matplotlib.transforms.LockableBbox(bbox, x0=None, y0=None, x1=None, y1=None, **kwargs)[source] -
Базы:
matplotlib.transforms.BboxBaseBboxгде некоторые элементы могут быть заблокированы на определённых значениях.При изменении дочернего прямоугольника, границы этого прямоугольника будут обновляться соответственно, за исключением заблокированных элементов.
Параметры: -
bbox : Bbox -
Дочерний прямоугольник для обертывания.
-
x0 : float or None -
Заблокированное значение для x0 или None для разблокирования.
-
y0 : float or None -
Заблокированное значение для y0 или None для разблокирования.
-
x1 : float or None -
Заблокированное значение для x1 или None для разблокирования.
-
y1 : float or None -
Заблокированное значение для y1 или None для разблокирования.
-
get_points()[source] -
Получить точки прямоугольника непосредственно как массив numpy вида:
[[x0, y0], [x1, y1]].
-
locked_x0 -
float или None: Значение, используемое для заблокированного x0.
-
locked_x1 -
float или None: Значение, используемое для заблокированного x1.
-
locked_y0 -
float или None: Значение, используемое для заблокированного y0.
-
locked_y1 -
float или None: Значение, используемое для заблокированного y1.
-
-
class matplotlib.transforms.ScaledTranslation(xt, yt, scale_trans, **kwargs)[source] -
Базы:
matplotlib.transforms.Affine2DBaseПреобразование, которое смещает на xt и yt, после того, как xt и yt были преобразованы заданным преобразованием scale_trans.
-
get_matrix()[source] -
Получить массив аффинного преобразования для аффинной части этого преобразования.
-
-
class matplotlib.transforms.Transform(shorthand_name=None)[source] -
Bases:
matplotlib.transforms.TransformNodeБазовый класс всех экземпляров
TransformNode, которые фактически выполняют преобразование.Все неаффинные преобразования должны быть подклассами этого класса. Новые аффинные преобразования должны быть подклассами
Affine2D.Подклассы этого класса должны переопределять следующие члены (как минимум):
input_dimsoutput_dimstransform()is_separablehas_inverse-
inverted()(еслиhas_inverseравно True)
Если преобразование должно выполнять нестандартные действия с объектами
matplotlib.path.Path, например, добавлять кривые там, где раньше были отрезки прямых, оно должно переопределять:Создает новый
TransformNode.Parameters: -
shorthand_name : str -
Строка, представляющая «имя» преобразования. Имя не имеет никакого значения, кроме улучшения удобочитаемости
str(transform)при DEBUG=True.
-
contains_branch(other)[source] -
Возвращает, является ли заданное преобразование поддеревом этого преобразования.
Эта процедура использует равенство преобразований для идентификации поддеревьев, поэтому во многих ситуациях используется идентификатор объекта.
В случае, когда заданное преобразование представляет собой все это преобразование, возвращает True.
-
contains_branch_seperately(other_transform)[source] -
Возвращает, является ли заданная ветвь поддеревом этого преобразования по каждой отдельной размерности.
Распространенное использование этого метода — определить, является ли преобразование комбинированным преобразованием, содержащим преобразование данных осей. Например:
x_isdata, y_isdata = trans.contains_branch_seperately(ax.transData)
-
depth -
Возвращает количество преобразований, которые были объединены для создания экземпляра Transform.
Примечание
В случае специального преобразования Composite возвращается максимальная глубина двух преобразований.
-
get_affine()[source] -
Получить аффинную часть этого преобразования.
-
get_matrix()[source] -
Получить массив аффинного преобразования для аффинной части этого преобразования.
-
has_inverse = False -
True, если для этого преобразования существует соответствующее обратное преобразование.
-
input_dims = None -
Количество входных размерностей этого преобразования. Должно быть переопределено (целыми числами) в подклассе.
-
inverted()[source] -
Возвращает соответствующее обратное преобразование.
Результат этого метода следует рассматривать как временный. Обновление self не вызывает соответствующего обновления его обратной копии.
x === self.inverted().transform(self.transform(x))
-
is_separable = False -
True, если это преобразование разложимо по осям x и y.
-
output_dims = None -
Количество выходных размерностей этого преобразования. Должно быть переопределено (целыми числами) в подклассе.
-
transform(values)[source] -
Выполняет преобразование заданного массива значений.
Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_affine(values)[source] -
Выполняет только аффинную часть этого преобразования на заданном массиве значений.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это обычно ничто. В аффинных преобразованиях это эквивалентно
transform(values).Принимает массив numpy формы (N x
input_dims) и возвращает массив numpy формы (N xoutput_dims).В качестве альтернативы принимает массив numpy длины
input_dimsи возвращает массив numpy длиныoutput_dims.
-
transform_angles(angles, pts, radians=False, pushoff=1e-05)[source] -
Выполняет преобразование набора углов, закрепленных в определенных местах.
angles должен быть столбцом вектором (т. е. массивом numpy).
pts должен быть массивом numpy с двумя столбцами x,y (преобразования углов в настоящее время работают только в 2D). Этот массив должен иметь то же количество строк, что и angles.
- radians указывает, задаются ли входные углы в
- радианах (True) или градусах (False; по умолчанию).
- pushoff — это расстояние для перемещения от pts для
- определения преобразованных углов (см. обсуждение метода ниже).
Преобразованные углы возвращаются в массиве с таким же размером, как angles.
Общий вариант этого метода использует очень общий алгоритм, который преобразует pts, а также места, очень близкие к pts, для нахождения угла в преобразованной системе.
-
transform_bbox(bbox)[source] -
Преобразовать заданный прямоугольник.
Обратите внимание, для более интеллектуальных преобразований, включая кэширование (часто требуемое для графиков matplotlib), см.
TransformedBbox.
-
transform_non_affine(values)[source] -
Выполняет только неаффинную часть преобразования.
transform(values)всегда эквивалентноtransform_affine(transform_non_affine(values)).В неаффинных преобразованиях это обычно эквивалентно
transform(values). В аффинных преобразованиях это всегда нетрансформация.Принимает массив NumPy формы (N x
input_dims) и возвращает массив NumPy формы (N xoutput_dims).В качестве альтернативы, принимает массив NumPy длины
input_dimsи возвращает массив NumPy длиныoutput_dims.
-
transform_path(path)[source] -
Возвращает преобразованный путь.
path: экземпляр
Path.В некоторых случаях это преобразование может вставить кривые в путь, который изначально представлял собой отрезки прямых.
-
transform_path_affine(path)[source] -
Возвращает путь, преобразованный только аффинной частью этого преобразования.
path: экземпляр
Path.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
transform_path_non_affine(path)[source] -
Возвращает путь, преобразованный только неаффинной частью этого преобразования.
path: экземпляр
Path.transform_path(path)эквивалентноtransform_path_affine(transform_path_non_affine(values)).
-
transform_point(point)[source] -
Функция-утилита, возвращающая преобразованную копию одной точки.
Точка задается как последовательность длины
input_dims. Преобразованная точка возвращается как последовательность длиныoutput_dims.
-
-
class matplotlib.transforms.TransformNode(shorthand_name=None)[source] -
Bases:
objectTransformNode— базовый класс для всех, кто участвует в дереве преобразований и должен делать недействительными своих родителей или быть сделанными недействительными. Сюда входят классы, которые на самом деле не являются преобразованиями, такие как ограничительные прямоугольники, так как некоторые преобразования зависят от ограничительных прямоугольников для вычисления своих значений.Создаёт новый
TransformNode.Параметры: -
shorthand_name : str -
Строка, представляющая "имя" преобразования. Имя не имеет никакого значения, кроме улучшения удобочитаемости
str(transform)при DEBUG=True.
-
INVALID = 3
-
INVALID_AFFINE = 2
-
INVALID_NON_AFFINE = 1
-
frozen()[source] -
Возвращает замороженную копию этого узла преобразования. Замороженная копия не будет обновляться при изменении дочерних элементов. Полезно для хранения ранее известного состояния преобразования, где
copy.deepcopy()обычно используется.
-
invalidate()[source] -
Делает этот
TransformNodeнедействительным и запускает процесс недействительности своих предков. Должно вызываться всякий раз, когда преобразование изменяется.
-
is_affine = False
-
is_bbox = False
-
pass_through = False -
Если pass_through True, все предки будут всегда делать недействительными, даже если 'self' уже недействителен.
-
set_children(*children)[source] -
Устанавливает дочерние элементы преобразования, чтобы система недействительности знала, какие преобразования могут сделать это преобразование недействительным. Должно вызываться из конструктора любых преобразований, которые зависят от других преобразований.
-
-
class matplotlib.transforms.TransformWrapper(child)[source] -
Bases:
matplotlib.transforms.TransformВспомогательный класс, который содержит единственное дочернее преобразование и действует эквивалентно ему.
Это полезно, если узел дерева преобразований должен быть заменён во время выполнения преобразованием другого типа. Этот класс позволяет замене правильно активировать недействительность.
Обратите внимание, что экземпляры
TransformWrapperдолжны иметь одинаковые входные и выходные размеры в течение всего своего жизненного цикла, поэтому дочернее преобразование может быть заменено только другим дочерним преобразованием с такими же размерами.child: экземпляр класса
Transform. Это дочернее преобразование позже может быть заменено с помощьюset().-
frozen()[source] -
Возвращает замороженную копию этого узла преобразования. Замороженная копия не будет обновляться при изменении дочерних элементов. Полезно для хранения ранее известного состояния преобразования, где
copy.deepcopy()обычно используется.
-
has_inverse
-
is_affine
-
is_separable
-
pass_through = True
-
set(child)[source] -
Заменяет текущее дочернее преобразование другим.
Новое дочернее преобразование должно иметь такое же количество входных и выходных размеров, что и текущее.
-
-
class matplotlib.transforms.TransformedBbox(bbox, transform, **kwargs)[source] -
Bases:
matplotlib.transforms.BboxBaseA
Bbox, автоматически преобразуемый заданным преобразованием. При изменении дочерней области или преобразования границы этого объекта будут обновляться соответствующим образом.Параметры: -
bbox : Bbox -
transform : Transform
-
get_points()[source] -
Получить точки области непосредственно в виде массива NumPy следующего формата:
[[x0, y0], [x1, y1]].
-
-
class matplotlib.transforms.TransformedPatchPath(patch)[source] -
Bases:
matplotlib.transforms.TransformedPathA
TransformedPatchPathкэширует неаффинное преобразованное копиюPatch. Эта кэшированная копия автоматически обновляется при изменении неаффинной части преобразования или области.Создать новый
TransformedPatchPathиз заданнойPatch.
-
class matplotlib.transforms.TransformedPath(path, transform)[source] -
Bases:
matplotlib.transforms.TransformNodeA
TransformedPathкэширует неаффинное преобразованную копиюPath. Эта кэшированная копия автоматически обновляется при изменении неаффинной части преобразования.Примечание
Пути считаются неизменяемыми этим классом. Любое обновление вершин/кодов пути не приведет к пересчёту преобразования.
Создать новый
TransformedPathиз заданныхPathиTransform.-
get_affine()[source]
-
get_fully_transformed_path()[source] -
Возвращает полностью преобразованную копию пути.
-
get_transformed_path_and_affine()[source] -
Возвращает копию пути с уже применённой неаффинной частью преобразования, вместе с аффинной частью пути, необходимой для завершения преобразования.
-
get_transformed_points_and_affine()[source] -
Возвращает копию пути с уже применённой неаффинной частью преобразования, вместе с аффинной частью пути, необходимой для завершения преобразования. В отличие от
get_transformed_path_and_affine(), интерполяция не будет выполнена.
-
-
matplotlib.transforms.blended_transform_factory(x_transform, y_transform)[source] -
Создаёт новое "смешанное" преобразование, использующее x_transform для преобразования оси x и y_transform для преобразования оси y.
Для случая, когда оба дочерних преобразования являются аффинными, возвращается более быстрая версия смешанного преобразования.
-
matplotlib.transforms.composite_transform_factory(a, b)[source] -
Создаёт новое составное преобразование, являющееся результатом применения преобразования a, а затем преобразования b.
Для случая, когда оба дочерних преобразования являются аффинными или одно из них является тождественным преобразованием, предоставляются сокращённые версии смешанного преобразования.
Составные преобразования также могут быть созданы с помощью оператора '+', например:
c = a + b
-
matplotlib.transforms.interval_contains(interval, val)[source] -
Проверяет, включая конечные точки, содержится ли заданное значение в интервале.
Параметры: -
interval : sequence of scalar -
Последовательность длиной 2, конечные точки, определяющие интервал.
-
val : scalar -
Значение для проверки принадлежности интервалу.
Возвращает: - bool
-
Возвращает True, если заданное значение входит в интервал.
-
-
matplotlib.transforms.interval_contains_open(interval, val)[source] -
Проверяет, исключая конечные точки, содержится ли заданное значение в интервале.
Параметры: -
interval : sequence of scalar -
Последовательность длиной 2, конечные точки, определяющие интервал.
-
val : scalar -
Значение для проверки принадлежности интервалу.
Возвращает: - bool
-
Возвращает True, если заданное значение входит в интервал.
-
-
matplotlib.transforms.nonsingular(vmin, vmax, expander=0.001, tiny=1e-15, increasing=True)[source] -
Изменяет конечные точки диапазона по мере необходимости, чтобы избежать особенностей.
Параметры: -
vmin, vmax : float -
Начальные конечные точки.
-
expander : float, optional, default: 0.001 -
Дробная величина, на которую vmin и vmax расширяются, если исходный интервал слишком мал, основываясь на tiny.
-
tiny : float, optional, default: 1e-15 -
Пороговое значение для отношения интервала к максимальному абсолютному значению его конечных точек. Если интервал меньше этого значения, он будет расширен. Это значение должно быть около 1e-15 или больше; в противном случае интервал будет приближаться к пределу разрешения двойной точности.
-
increasing : bool, optional, default: True -
Если True, меняет местами vmin, vmax, если vmin > vmax.
Возвращает: -
vmin, vmax : float -
Конечные точки, расширенные и/или поменянные местами по необходимости. Если одно из входных значений равно inf или NaN, или если оба входных значения равны 0 или очень близки к нулю, возвращается -expander, expander.
-
-
matplotlib.transforms.offset_copy(trans, fig=None, x=0.0, y=0.0, units='inches')[source] -
Возвращает новый трансформ с добавленным смещением.
Параметры: -
trans : Transform instance -
Любой трансформ, к которому будет применено смещение.
-
fig : Figure, optional, default: None -
Текущая фигура. Может быть None, если единицы равны 'точки'.
-
x, y : float, optional, default: 0.0 -
Задает смещение, которое нужно применить.
-
units : {'inches', 'points', 'dots'}, optional -
Единицы смещения.
Возвращает: -
trans : Transform instance -
Трансформ со применённым смещением.
-
© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.0.0/api/transformations.html