matplotlib.transforms
#
Matplotlib 包含一个用于任意几何变换的框架,该框架用于确定画布上所有绘制元素的最终位置。
变换是由 TransformNode
对象组成的树,其具体值取决于其子节点。当子节点的内容发生变化时,其父节点会自动失效。下一次访问失效的变换时,它会重新计算以反映这些变化。这种失效/缓存方法防止了变换的不必要重新计算,并有助于提高交互性能。
例如,这里是一个用于将数据绘制到图表中的变换树的图示:

该框架可用于仿射和非仿射变换。然而,为了速度,我们希望尽可能使用后端渲染器来执行仿射变换。因此,可以仅对一组数据执行变换的仿射或非仿射部分。仿射变换总是假定在非仿射变换之后发生。对于任何变换:
full transform == non-affine part + affine part
后端不需要自己处理非仿射变换。
有关如何使用转换的示例,请参阅教程 变换教程。
- class matplotlib.transforms.Affine2D(matrix=None, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
一个可变的二维仿射变换。
从3x3的numpy浮点数数组初始化一个仿射变换:
a c e b d f 0 0 1
如果 matrix 为 None,则使用单位变换进行初始化。
- 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
对象的冻结副本设置此变换。
- 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)[源代码][源代码]#
基类:
AffineBase
所有二维仿射变换的基类。
2D 仿射变换使用 3x3 numpy 数组进行操作:
a c e b d f 0 0 1
此类提供只读接口。对于可变的二维仿射变换,请使用
Affine2D
。这个类的子类通常只需要重写构造函数和
get_matrix
方法,该方法生成一个自定义的 3x3 矩阵。- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- has_inverse = True#
如果此变换有对应的逆变换,则为真。
- input_dims = 2#
此变换的输入维度数量。必须在子类中用整数重写。
- inverted()[源代码][源代码]#
返回相应的逆变换。
它持有
x == self.inverted().transform(self.transform(x))
。此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。
- property is_separable#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- output_dims = 2#
此变换的输出维度数量。必须在子类中用整数重写。
- transform_affine(values)[源代码][源代码]#
仅对给定数组值应用此变换的仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常是一个空操作。在仿射变换中,这等同于
transform(values)
。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- class matplotlib.transforms.AffineBase(*args, **kwargs)[源代码][源代码]#
基类:
Transform
所有任意维度仿射变换的基类。
- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- is_affine = True#
- transform(values)[源代码][源代码]#
在给定的 values 数组上应用此转换。
- 参数:
- 值类似数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- transform_affine(values)[源代码][源代码]#
仅对给定数组值应用此变换的仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常是一个空操作。在仿射变换中,这等同于
transform(values)
。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- transform_non_affine(values)[源代码][源代码]#
仅应用此变换的非仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常等同于
transform(values)
。在仿射变换中,这始终是一个空操作。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- class matplotlib.transforms.AffineDeltaTransform(transform, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
用于转换点对之间位移的转换包装器。
此类旨在用于转换点对之间的位移(“位置增量”)(例如,作为
Collection
的offset_transform
):给定一个变换t
,使得t = AffineDeltaTransform(t) + offset
,AffineDeltaTransform
满足AffineDeltaTransform(a - b) == AffineDeltaTransform(a) - AffineDeltaTransform(b)
。这是通过将变换矩阵的偏移分量强制设为零来实现的。
自3.3版本以来,此类为实验性质,API可能会发生变化。
- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- pass_through = True#
如果 pass_through 为 True,所有祖先都将始终被无效化,即使 'self' 已经无效。
- class matplotlib.transforms.Bbox(points, **kwargs)[源代码][源代码]#
基类:
BboxBase
一个可变的边界框。
示例
从已知边界创建
默认构造函数接受边界“点”
[[xmin, ymin], [xmax, ymax]]
。>>> Bbox([[1, 1], [3, 7]]) Bbox([[1.0, 1.0], [3.0, 7.0]])
或者,可以从展平的点数组创建一个Bbox,即所谓的“范围”
(xmin, ymin, xmax, ymax)
>>> Bbox.from_extents(1, 1, 3, 7) Bbox([[1.0, 1.0], [3.0, 7.0]])
或从“边界”
(xmin, ymin, width, height)
中获取。>>> Bbox.from_bounds(1, 1, 2, 6) Bbox([[1.0, 1.0], [3.0, 7.0]])
从点集合创建
用于累积 Bbox 的“空”对象是空 Bbox,它代表空集的占位符。
>>> Bbox.null() Bbox([[inf, inf], [-inf, -inf]])
向空边界框添加点将为您提供这些点的边界框。
>>> box = Bbox.null() >>> box.update_from_data_xy([[1, 1]]) >>> box Bbox([[1.0, 1.0], [1.0, 1.0]]) >>> box.update_from_data_xy([[2, 3], [3, 2]], ignore=False) >>> box Bbox([[1.0, 1.0], [3.0, 3.0]])
设置
ignore=True
相当于从空的边界框重新开始。>>> box.update_from_data_xy([[1, 1]], ignore=True) >>> box Bbox([[1.0, 1.0], [1.0, 1.0]])
警告
建议始终明确指定
ignore
。如果没有指定,ignore
的默认值可以随时被有权访问你的 Bbox 的代码更改,例如使用ignore
方法。``null`` bbox 的属性
备注
Bbox.null()
的当前行为可能会让人感到意外,因为它并不具备“空集”的所有属性,因此从数学意义上讲,它并不像一个“零”对象那样表现。我们可能会在未来对此进行更改(并有一个弃用期)。空边界框是交集的单位元
>>> Bbox.intersection(Bbox([[1, 1], [3, 7]]), Bbox.null()) Bbox([[1.0, 1.0], [3.0, 7.0]])
除了与自身的情况外,它返回整个空间。
>>> Bbox.intersection(Bbox.null(), Bbox.null()) Bbox([[-inf, -inf], [inf, inf]])
包含 null 的联合将始终返回完整空间(而不是其他集合!)
>>> Bbox.union([Bbox([[0, 0], [0, 0]]), Bbox.null()]) Bbox([[-inf, -inf], [inf, inf]])
- static from_bounds(x0, y0, width, height)[源代码][源代码]#
从 x0, y0, width 和 height 创建一个新的
Bbox
。width 和 height 可以是负数。
- static from_extents(*args, minpos=None)[源代码][源代码]#
从 left、bottom、right 和 top 创建一个新的 Bbox。
*y*轴向上增加。
- 参数:
- 左, 底, 右, 顶float
边界框的四个范围。
- minpos浮点数或无
如果提供了这个值,Bbox 将设置一个最小正值。这在处理对数刻度和其他导致负边界产生浮点错误的刻度时非常有用。
- ignore(value)[源代码][源代码]#
设置是否应忽略框的现有边界,以便后续调用
update_from_data_xy()
。- 值布尔
当
True
时,对update_from_data_xy
的后续调用将忽略Bbox
的现有边界。当
False
时,对update_from_data_xy
的后续调用将包括Bbox
的现有边界。
- property intervalx#
定义边界框的 x 坐标对。
这不能保证从左到右排序。
- property intervaly#
定义边界框的一对 y 坐标。
这不能保证从下到上排序。
- property minpos#
Bbox 中在两个方向上的最小正值。
这在处理对数刻度和其他负边界导致浮点错误的刻度时很有用,并将被用作最小范围,而不是 p0。
- property minposx#
Bbox 内 x 方向上的最小正值。
这在处理对数刻度和其他负边界导致浮点错误的刻度时非常有用,并将被用作最小 x 范围,而不是 x0。
- property minposy#
Bbox 内 y 方向上的最小正值。
这在处理对数刻度和其他负边界导致浮点错误的刻度时非常有用,并将被用作最小 y 范围,而不是 y0。
- property p0#
定义边界框的第一对 (x, y) 坐标。
这并不保证是左下角(为此,请使用
min
)。
- property p1#
定义边界框的第二对 (x, y) 坐标。
这并不保证是右上角(为此,请使用
max
)。
- update_from_data_xy(xy, ignore=None, updatex=True, updatey=True)[源代码][源代码]#
基于传入的 xy 坐标更新
Bbox
边界。更新后,边界将具有正的 宽度 和 高度;x0 和 y0 将是最小值。
- update_from_data_y(y, ignore=None)[源代码][源代码]#
根据传入的数据更新
Bbox
的 y 轴边界。更新后,边界将具有正值 height,并且 y0 将是最小值。
- class matplotlib.transforms.BboxBase(shorthand_name=None)[源代码][源代码]#
-
所有边界框的基类。
这个类是不可变的;
Bbox
是一个可变的子类。规范的表示形式是两个点,它们的顺序没有限制。提供了方便的属性来获取左、下、右、上边缘以及宽度和高度,但这些属性并未明确存储。
- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- 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)}#
- property height#
边界框的(带符号)高度。
- property intervalx#
定义边界框的 x 坐标对。
这不能保证从左到右排序。
- property intervaly#
定义边界框的一对 y 坐标。
这不能保证从下到上排序。
- is_affine = True#
- is_bbox = True#
- property max#
边界框的右上角。
- property min#
边界框的左下角。
- 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 也可以作为绝对尺寸的比率给出,而不是相对尺寸的比率。
- property size#
边界框的(带符号的)宽度和高度。
- property width#
边界框的(带符号的)宽度。
- property xmax#
边界框的右侧边缘。
- property xmin#
边界框的左边沿。
- property ymax#
边界框的顶部边缘。
- property ymin#
边界框的底部边缘。
- class matplotlib.transforms.BboxTransform(boxin, boxout, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
BboxTransform
线性地将点从一个Bbox
转换到另一个。创建一个新的
BboxTransform
,它将点从 boxin 线性变换到 boxout 。- is_separable = True#
如果此变换在x和y维度上是可分离的,则为True。
- class matplotlib.transforms.BboxTransformFrom(boxin, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
BboxTransformFrom
将点从给定的Bbox
线性变换到单位边界框。- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- is_separable = True#
如果此变换在x和y维度上是可分离的,则为True。
- class matplotlib.transforms.BboxTransformTo(boxout, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
BboxTransformTo
是一种线性变换,它将点从单位边界框变换到给定的Bbox
。创建一个新的
BboxTransformTo
,它将点从单位边界框线性变换到 boxout。- is_separable = True#
如果此变换在x和y维度上是可分离的,则为True。
- class matplotlib.transforms.BboxTransformToMaxOnly(boxout, **kwargs)[源代码][源代码]#
-
[已弃用]
BboxTransformToMaxOnly
是一种线性变换,它将点从单位边界框变换到给定的Bbox
,固定左上角为 (0, 0)。注释
自 3.9 版本弃用.
创建一个新的
BboxTransformTo
,它将点从单位边界框线性变换到 boxout。
- class matplotlib.transforms.BlendedAffine2D(x_transform, y_transform, **kwargs)[源代码][源代码]#
基类:
_BlendedMixin
,Affine2DBase
“混合”变换在 x 方向使用一种变换,在 y 方向使用另一种变换。
此版本针对子变换均为
Affine2DBase
类型的情况进行了优化。使用 x_transform 来转换 x 轴,使用 y_transform 来转换 y 轴,创建一个新的“混合”变换。
x_transform
和y_transform
都必须是二维仿射变换。通常你不会直接调用这个构造函数,而是使用
blended_transform_factory
函数,它可以自动确定创建哪种类型的混合变换。- is_separable = True#
如果此变换在x和y维度上是可分离的,则为True。
- class matplotlib.transforms.BlendedGenericTransform(x_transform, y_transform, **kwargs)[源代码][源代码]#
基类:
_BlendedMixin
,Transform
“混合”变换在 x 方向使用一种变换,在 y 方向使用另一种变换。
这个“通用”版本可以处理在 x 和 y 方向上的任何给定子变换。
使用 x_transform 来转换 x 轴,使用 y_transform 来转换 y 轴,创建一个新的“混合”变换。
通常你不会直接调用这个构造函数,而是使用
blended_transform_factory
函数,它可以自动确定创建哪种类型的混合变换。- contains_branch(other)[源代码][源代码]#
返回给定的变换是否是此变换的子树。
此例程使用变换等式来识别子树,因此在许多情况下,将使用对象ID。
对于给定的变换表示整个变换的情况,返回 True。
- property depth#
返回形成此 Transform 实例的变换链中的变换数量。
备注
对于复合变换的特殊情况,返回两者的最大深度。
- property has_inverse#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- input_dims = 2#
此变换的输入维度数量。必须在子类中用整数重写。
- inverted()[源代码][源代码]#
返回相应的逆变换。
它持有
x == self.inverted().transform(self.transform(x))
。此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。
- property is_affine#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- is_separable = True#
如果此变换在x和y维度上是可分离的,则为True。
- output_dims = 2#
此变换的输出维度数量。必须在子类中用整数重写。
- pass_through = True#
如果 pass_through 为 True,所有祖先都将始终被无效化,即使 'self' 已经无效。
- transform_non_affine(values)[源代码][源代码]#
仅应用此变换的非仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常等同于
transform(values)
。在仿射变换中,这始终是一个空操作。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- class matplotlib.transforms.CompositeAffine2D(a, b, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
通过先应用变换 a 再应用变换 b 形成的复合变换。
这个版本是对处理 a 和 b 均为二维仿射变换的情况的优化。
创建一个新的复合变换,该变换是应用
Affine2DBase
a 然后Affine2DBase
b 的结果。通常你不会直接调用这个构造函数,而是写
a + b
,这会自动选择最适合的复合变换实例来创建。- property depth#
返回形成此 Transform 实例的变换链中的变换数量。
备注
对于复合变换的特殊情况,返回两者的最大深度。
- class matplotlib.transforms.CompositeGenericTransform(a, b, **kwargs)[源代码][源代码]#
基类:
Transform
通过先应用变换 a 再应用变换 b 形成的复合变换。
这个“通用”版本可以处理任意两种变换。
创建一个新的复合变换,该变换是应用变换 a 然后变换 b 的结果。
通常你不会直接调用这个构造函数,而是写
a + b
,这会自动选择最适合的复合变换实例来创建。- contains_branch_seperately(other_transform)[源代码][源代码]#
返回给定分支是否是此变换在每个单独维度上的子树。
此方法的一个常见用途是识别一个变换是否是一个包含 Axes 数据变换的混合变换。例如:
x_isdata, y_isdata = trans.contains_branch_seperately(ax.transData)
- property depth#
返回形成此 Transform 实例的变换链中的变换数量。
备注
对于复合变换的特殊情况,返回两者的最大深度。
- property has_inverse#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- inverted()[源代码][源代码]#
返回相应的逆变换。
它持有
x == self.inverted().transform(self.transform(x))
。此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。
- property is_affine#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- property is_separable#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- pass_through = True#
如果 pass_through 为 True,所有祖先都将始终被无效化,即使 'self' 已经无效。
- transform_affine(values)[源代码][源代码]#
仅对给定数组值应用此变换的仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常是一个空操作。在仿射变换中,这等同于
transform(values)
。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- class matplotlib.transforms.IdentityTransform(*args, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
一个特殊的类,以快速的方式执行单一操作,即恒等变换。
- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- inverted()[源代码][源代码]#
返回相应的逆变换。
它持有
x == self.inverted().transform(self.transform(x))
。此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。
- transform(values)[源代码][源代码]#
在给定的 values 数组上应用此转换。
- 参数:
- 值类似数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- transform_affine(values)[源代码][源代码]#
仅对给定数组值应用此变换的仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常是一个空操作。在仿射变换中,这等同于
transform(values)
。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- transform_non_affine(values)[源代码][源代码]#
仅应用此变换的非仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常等同于
transform(values)
。在仿射变换中,这始终是一个空操作。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- class matplotlib.transforms.LockableBbox(bbox, x0=None, y0=None, x1=None, y1=None, **kwargs)[源代码][源代码]#
基类:
BboxBase
一个
Bbox
,其中某些元素可能在某些值上被锁定。当子边界框发生变化时,此边界框的边界将相应更新,锁定元素除外。
- 参数:
- bbox
Bbox
要包裹的子边界框。
- x0浮点数或无
x0 的锁定值,或 None 以保持未锁定状态。
- y0浮点数或无
y0 的锁定值,或 None 以保持未锁定。
- x1浮点数或无
x1 的锁定值,或 None 以保持未锁定。
- y1浮点数或无
y1 的锁定值,或 None 以保持未锁定。
- bbox
- property locked_x0#
用于锁定 x0 的值。
- 类型:
浮点数或无
- property locked_x1#
用于锁定 x1 的值。
- 类型:
浮点数或无
- property locked_y0#
用于锁定 y0 的值。
- 类型:
浮点数或无
- property locked_y1#
用于锁定 y1 的值。
- 类型:
浮点数或无
- class matplotlib.transforms.ScaledTranslation(xt, yt, scale_trans, **kwargs)[源代码][源代码]#
基类:
Affine2DBase
一个变换,它在 xt 和 yt 被 scale_trans 变换之后,通过 xt 和 yt 进行平移。
- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- class matplotlib.transforms.Transform(shorthand_name=None)[源代码][源代码]#
-
所有实际执行转换的
TransformNode
实例的基类。所有非仿射变换都应该是这个类的子类。新的仿射变换应该是
Affine2D
的子类。此类别的子类别应至少覆盖以下成员:
inverted()
(如果存在逆)
如果默认设置不合适,可以覆盖以下属性:
is_separable
(默认对于1D到1D的变换为True,否则为False)has_inverse
(如果inverted()
被重写则默认为 True,否则为 False)
如果变换需要对
matplotlib.path.Path
对象进行非标准的操作,例如在原本是线段的地方添加曲线,它应该重写:- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- __add__(other)[源代码][源代码]#
将两个变换组合在一起,使得 self 之后跟随 other。
A + B
返回一个变换C
,使得C.transform(x) == B.transform(A.transform(x))
。
- __sub__(other)[源代码][源代码]#
将 self 与 other 的逆组合,如果有相同的项则抵消:
# In general: A - B == A + B.inverted() # (but see note regarding frozen transforms below). # If A "ends with" B (i.e. A == A' + B for some A') we can cancel # out B: (A' + B) - B == A' # Likewise, if B "starts with" A (B = A + B'), we can cancel out A: A - (A + B') == B'.inverted() == B'^-1
取消(而不是简单地返回
A + B.inverted()
)在多个方面都很重要:在计算 B 的逆时,它避免了浮点数的不准确性:
B - B
保证完全抵消(结果为单位变换),而B + B.inverted()
可能会有一个小的 epsilon 差异。B.inverted()
总是返回一个冻结的变换:如果计算A + B + B.inverted()
并在之后改变B
,那么B.inverted()
不会更新,最后两个项将不再相互抵消;另一方面,即使B
被改变,A + B - B
将始终等于A
。
- contains_branch(other)[源代码][源代码]#
返回给定的变换是否是此变换的子树。
此例程使用变换等式来识别子树,因此在许多情况下,将使用对象ID。
对于给定的变换表示整个变换的情况,返回 True。
- contains_branch_seperately(other_transform)[源代码][源代码]#
返回给定分支是否是此变换在每个单独维度上的子树。
此方法的一个常见用途是识别一个变换是否是一个包含 Axes 数据变换的混合变换。例如:
x_isdata, y_isdata = trans.contains_branch_seperately(ax.transData)
- property depth#
返回形成此 Transform 实例的变换链中的变换数量。
备注
对于复合变换的特殊情况,返回两者的最大深度。
- has_inverse = False#
如果此变换有对应的逆变换,则为真。
- input_dims = None#
此变换的输入维度数量。必须在子类中用整数重写。
- inverted()[源代码][源代码]#
返回相应的逆变换。
它持有
x == self.inverted().transform(self.transform(x))
。此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。
- is_separable = False#
如果此变换在x和y维度上是可分离的,则为True。
- output_dims = None#
此变换的输出维度数量。必须在子类中用整数重写。
- transform(values)[源代码][源代码]#
在给定的 values 数组上应用此转换。
- 参数:
- 值类似数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- transform_affine(values)[源代码][源代码]#
仅对给定数组值应用此变换的仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常是一个空操作。在仿射变换中,这等同于
transform(values)
。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- transform_angles(angles, pts, radians=False, pushoff=1e-05)[源代码][源代码]#
在特定位置锚定的一组角度的变换。
- 参数:
- 角度(N,) 类数组
要转换的角度。
- pts(N, 2) 类数组
角度固定的点。
- 弧度bool, 默认值: False
角度是弧度还是度数。
- pushofffloat
对于 pts 中的每个点和 angles 中的每个角度,通过从该点开始变换长度为 pushoff 的线段,并使该角度相对于水平轴,然后测量水平轴与变换后的线段之间的角度,来计算变换后的角度。
- 返回:
- (N,) 数组
- transform_bbox(bbox)[源代码][源代码]#
转换给定的边界框。
对于包括缓存在内的更智能的变换(这是Matplotlib中的常见需求),请参见
TransformedBbox
。
- transform_non_affine(values)[源代码][源代码]#
仅应用此变换的非仿射部分。
transform(values)
总是等同于transform_affine(transform_non_affine(values))
。在非仿射变换中,这通常等同于
transform(values)
。在仿射变换中,这始终是一个空操作。- 参数:
- 值数组
输入值为一个长度为
input_dims
的数组或形状为 (N,input_dims
) 的数组。
- 返回:
- 数组
输出值为一个长度为
output_dims
的数组,或者形状为 (N,output_dims
),取决于输入。
- 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)[源代码][源代码]#
返回一个变换后的点。
此函数仅保留用于向后兼容;更通用的
transform
方法能够转换点列表和单个点。点以长度为
input_dims
的序列给出。变换后的点作为长度为output_dims
的序列返回。
- class matplotlib.transforms.TransformNode(shorthand_name=None)[源代码][源代码]#
基类:
object
参与转换树并需要使其父级无效或被无效化的任何事物的基类。这包括实际上不是转换的类,例如边界框,因为某些转换依赖于边界框来计算它们的值。
- 参数:
- 简称str
表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高
str(transform)
的可读性外,没有其他意义。
- INVALID = 3#
- INVALID_AFFINE = 2#
- INVALID_NON_AFFINE = 1#
- invalidate()[源代码][源代码]#
使这个
TransformNode
失效并触发其祖先的失效。任何时候变换改变时都应调用。
- is_affine = False#
- is_bbox = False#
- pass_through = False#
如果 pass_through 为 True,所有祖先都将始终被无效化,即使 'self' 已经无效。
- class matplotlib.transforms.TransformWrapper(child)[源代码][源代码]#
基类:
Transform
一个辅助类,持有单个子变换并与其等效。
如果转换树的一个节点在运行时必须被替换为不同类型的转换,这是有用的。此类允许该替换正确触发失效。
TransformWrapper
实例在其整个生命周期中必须具有相同的输入和输出维度,因此子变换只能替换为具有相同维度的另一个子变换。child: 一个
Transform
实例。这个子对象之后可能会被set()
方法替换。- property has_inverse#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- property input_dims#
!! 由 numpydoc 处理 !!
- property is_affine#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- property is_separable#
bool(x) -> bool
当参数 x 为真时返回 True,否则返回 False。内置的 True 和 False 是类 bool 仅有的两个实例。类 bool 是类 int 的子类,并且不能被继承。
- property output_dims#
!! 由 numpydoc 处理 !!
- pass_through = True#
如果 pass_through 为 True,所有祖先都将始终被无效化,即使 'self' 已经无效。
- class matplotlib.transforms.TransformedBbox(bbox, transform, **kwargs)[源代码][源代码]#
基类:
BboxBase
一个
Bbox
会根据给定的变换自动进行变换。当子边界框或变换发生变化时,此边界框的边界将相应更新。- 参数:
- bbox
Bbox
- 变换 :
变换
转换
- bbox
- class matplotlib.transforms.TransformedPatchPath(patch)[源代码][源代码]#
-
TransformedPatchPath
缓存了Patch
的一个非仿射变换副本。当变换的非仿射部分或补丁发生变化时,此缓存副本会自动更新。- 参数:
- patch补丁
- class matplotlib.transforms.TransformedPath(path, transform)[源代码][源代码]#
-
TransformedPath
缓存了Path
的一个非仿射变换副本。当变换的非仿射部分发生变化时,此缓存副本会自动更新。备注
路径被此类的视为不可变的。对路径的顶点/代码的任何更新都不会触发变换的重新计算。
- 参数:
- 路径 :
Path
路径 - 变换 :
变换
转换
- 路径 :
- 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)[源代码][源代码]#
检查,包括性地,一个区间是否包含给定的值。
- 参数:
- 间隔(浮点数, 浮点数)
区间的端点。
- valfloat
要检查的值在区间内。
- 返回:
- 布尔
是否 val 在 interval 内。
- matplotlib.transforms.interval_contains_open(interval, val)[源代码][源代码]#
检查,排除端点,一个区间是否包含给定值。
- 参数:
- 间隔(浮点数, 浮点数)
区间的端点。
- valfloat
要检查的值在区间内。
- 返回:
- 布尔
是否 val 在 interval 内。
- matplotlib.transforms.nonsingular(vmin, vmax, expander=0.001, tiny=1e-15, increasing=True)[源代码][源代码]#
根据需要修改范围的端点以避免奇点。
- 参数:
- vmin, vmaxfloat
初始端点。
- 扩展器float, 默认值: 0.001
如果原始区间太小,基于 tiny ,vmin 和 vmax 扩展的分数量。
- 小float, 默认值: 1e-15
区间与其端点最大绝对值之比的阈值。如果区间小于此值,则将被扩展。此值应约为 1e-15 或更大;否则区间将接近双精度分辨率极限。
- 增加bool, 默认: True
如果为真,当 vmin > vmax 时交换 vmin 和 vmax。
- 返回:
- vmin, vmaxfloat
端点,必要时扩展和/或交换。如果任一输入为无穷大或NaN,或者如果两个输入均为0或非常接近于零,则返回 -扩展器,扩展器。