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