Работа с преобразованиями
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] -
Базовый класс всех аффинных преобразований любого числа измерений.
Основанные классы:
matplotlib.transforms.Transform-
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)[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)).
-
-
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, ширина и высота.ширина и высота могут быть отрицательными.
-
static from_extents(*args)[source] -
(Статический метод) Создает новый прямоугольник из слева, снизу, справа и сверху.
Ось y направлена вверх.
-
get_points()[source] -
Получить точки прямоугольника напрямую как массив NumPy вида:
[[x0, y0], [x1, y1]].
-
ignore(value)[source] -
Установить, следует ли игнорировать существующие границы прямоугольника при последующих вызовах
update_from_data_xy().-
value : bool -
- При
True, последующие вызовыupdate_from_data_xy()будут игнорировать существующие границы прямоугольника. - При
False, последующие вызовыupdate_from_data_xy()будут учитывать существующие границы прямоугольника.
- При
-
-
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] -
Обновить границы прямоугольника на основе переданных данных. После обновления границы будут иметь положительную ширину и высоту; x0 и y0 будут минимальными значениями.
Параметры: -
xy : ndarray -
Массив NumPy с точками в 2D.
-
ignore : bool, optional -
- При
True, игнорировать существующие границы прямоугольника. - При
False, учитывать существующие границы прямоугольника. - При
None, использовать последнее значение, переданное вignore().
- При
-
updatex, updatey : bool, optional -
При
True, обновить значения x/y.
-
-
-
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] -
Bases:
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] -
Bases:
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] -
Bases:
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] -
Bases:
matplotlib.transforms.Affine2DBaseA special class that does one thing, the identity transform, in a fast way.
-
frozen()[source] -
Returns a frozen copy of this transform node. The frozen copy will not update when its children change. Useful for storing a previously known state of a transform where
copy.deepcopy()might normally be used.
-
get_affine()[source] -
Return the corresponding inverse transformation.
The return value of this method should be treated as temporary. An update to self does not cause a corresponding update to its inverted copy.
x === self.inverted().transform(self.transform(x))
-
get_matrix()[source] -
Get the Affine transformation array for the affine part of this transform.
-
inverted() -
Return the corresponding inverse transformation.
The return value of this method should be treated as temporary. An update to self does not cause a corresponding update to its inverted copy.
x === self.inverted().transform(self.transform(x))
-
transform(points)[source] -
Performs only the non-affine part of the transformation.
transform(values)is always equivalent totransform_affine(transform_non_affine(values)).In non-affine transformations, this is generally equivalent to
transform(values). In affine transformations, this is always a no-op.Accepts a numpy array of shape (N x
input_dims) and returns a numpy array of shape (N xoutput_dims).Alternatively, accepts a numpy array of length
input_dimsand returns a numpy array of lengthoutput_dims.
-
transform_affine(points) -
Performs only the non-affine part of the transformation.
transform(values)is always equivalent totransform_affine(transform_non_affine(values)).In non-affine transformations, this is generally equivalent to
transform(values). In affine transformations, this is always a no-op.Accepts a numpy array of shape (N x
input_dims) and returns a numpy array of shape (N xoutput_dims).Alternatively, accepts a numpy array of length
input_dimsand returns a numpy array of lengthoutput_dims.
-
transform_non_affine(points) -
Performs only the non-affine part of the transformation.
transform(values)is always equivalent totransform_affine(transform_non_affine(values)).In non-affine transformations, this is generally equivalent to
transform(values). In affine transformations, this is always a no-op.Accepts a numpy array of shape (N x
input_dims) and returns a numpy array of shape (N xoutput_dims).Alternatively, accepts a numpy array of length
input_dimsand returns a numpy array of lengthoutput_dims.
-
transform_path(path)[source] -
Returns a path, transformed only by the non-affine part of this transform.
path: a
Pathinstance.transform_path(path)is equivalent totransform_path_affine(transform_path_non_affine(values)).
-
transform_path_affine(path) -
Returns a path, transformed only by the non-affine part of this transform.
path: a
Pathinstance.transform_path(path)is equivalent totransform_path_affine(transform_path_non_affine(values)).
-
transform_path_non_affine(path) -
Returns a path, transformed only by the non-affine part of this transform.
path: a
Pathinstance.transform_path(path)is equivalent totransform_path_affine(transform_path_non_affine(values)).
-
-
class matplotlib.transforms.LockableBbox(bbox, x0=None, y0=None, x1=None, y1=None, **kwargs)[source] -
Bases:
matplotlib.transforms.BboxBaseA
Bboxwhere some elements may be locked at certain values.When the child bounding box changes, the bounds of this bbox will update accordingly with the exception of the locked elements.
Parameters: -
bbox : Bbox -
The child bounding box to wrap.
-
x0 : float or None -
The locked value for x0, or None to leave unlocked.
-
y0 : float or None -
The locked value for y0, or None to leave unlocked.
-
x1 : float or None -
The locked value for x1, or None to leave unlocked.
-
y1 : float or None -
The locked value for y1, or None to leave unlocked.
-
get_points()[source] -
Get the points of the bounding box directly as a numpy array of the form:
[[x0, y0], [x1, y1]].
-
locked_x0 -
float or None: The value used for the locked x0.
-
locked_x1 -
float or None: The value used for the locked x1.
-
locked_y0 -
float or None: The value used for the locked y0.
-
locked_y1 -
float or None: The value used for the locked y1.
-
-
class matplotlib.transforms.ScaledTranslation(xt, yt, scale_trans, **kwargs)[source] -
Bases:
matplotlib.transforms.Affine2DBaseA transformation that translates by xt and yt, after xt and yt have been transformad by the given transform scale_trans.
-
get_matrix()[source] -
Get the Affine transformation array for the affine part of this transform.
-
-
class matplotlib.transforms.Transform(shorthand_name=None)[source] -
Основание:
matplotlib.transforms.TransformNodeБазовый класс всех экземпляров
TransformNode, которые фактически выполняют преобразование.Все неаффинные преобразования должны быть подклассами этого класса. Новые аффинные преобразования должны быть подклассами
Affine2D.Подклассы этого класса должны переопределять следующие члены (как минимум):
input_dimsoutput_dimstransform()is_separablehas_inverse-
inverted()(еслиhas_inverseравно True)
Если преобразование должно выполнять нестандартные действия с объектами
matplotlib.path.Path, такие как добавление кривых там, где раньше были отрезки прямых, оно должно переопределить:Создает новый
TransformNode.Параметры: -
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
Bboxthat is automatically transformed by a given transform. When either the child bounding box or transform changes, the bounds of this bbox will update accordingly.Параметры: -
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, если units равны 'dots'.
-
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/2.2.3/api/transformations.html