Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020
matplotlib.transforms
¶Matplotlib包含一个用于任意几何转换的框架,用于确定画布上绘制的所有元素的最终位置。
转换被组成树 TransformNode
其实际值取决于其子级的对象。当孩子的内容发生变化时,他们的父母将自动失效。下次访问失效的转换时,将重新计算以反映这些更改。这种无效/缓存方法可以防止不必要的转换重新编译,并有助于提高交互性能。
例如,下面是用于将数据绘制到图表的转换树的图:
该框架既可用于仿射转换,也可用于非仿射转换。但是,为了提高速度,我们希望尽可能使用后端渲染器执行仿射转换。因此,在一组数据上只执行转换的仿射或非仿射部分是可能的。仿射总是假定发生在非仿射之后。对于任何转换:
full transform == non-affine part + affine part
后端不应该自己处理非仿射转换。
matplotlib.transforms.
Affine2D
(matrix=None, **kwargs)[源代码]¶基类:matplotlib.transforms.Affine2DBase
可变的二维仿射变换。
从3x3 numpy float数组初始化仿射转换:
a c e
b d f
0 0 1
如果 矩阵 为“无”,使用标识转换初始化。
identity
()[源代码]¶(StaticMethod)返回新的 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 为“无”,在两个 x -和 y -方向。
返回 self ,因此此方法可以很容易地与对 rotate()
, rotate_deg()
, translate()
和 scale()
.
set
(other)[源代码]¶从另一个已冻结的副本设置此转换 Affine2DBase
对象。
skew
(xShear, yShear)[源代码]¶在适当位置添加倾斜。
X剪 和 YS剪力 剪切角是沿着 x -和 y -轴,分别以弧度表示。
返回 self ,因此此方法可以很容易地与对 rotate()
, rotate_deg()
, translate()
和 scale()
.
skew_deg
(xShear, yShear)[源代码]¶在适当位置添加倾斜。
X剪 和 YS剪力 剪切角是沿着 x -和 y -轴,分别以度为单位。
返回 self ,因此此方法可以很容易地与对 rotate()
, rotate_deg()
, translate()
和 scale()
.
translate
(tx, ty)[源代码]¶就地添加翻译。
返回 self ,因此此方法可以很容易地与对 rotate()
, rotate_deg()
, translate()
和 scale()
.
matplotlib.transforms.
Affine2DBase
(*args, **kwargs)[源代码]¶基类:matplotlib.transforms.AffineBase
所有二维仿射变换的基类。
使用3x3 numpy数组执行二维仿射转换:
a c e
b d f
0 0 1
此类提供只读接口。对于可变的二维仿射变换,请使用 Affine2D
.
此类的子类通常只需要重写构造函数和 get_matrix()
生成自定义3x3矩阵。
has_inverse
= True¶input_dims
= 2¶inverted
()[源代码]¶返回相应的逆变换。
此方法的返回值应视为临时值。对…的更新 self 不会对其反向副本进行相应的更新。
x === self.inverted().transform(self.transform(x))
is_separable
¶matrix_from_values
(a, b, c, d, e, f)[源代码]¶(StaticMethod)创建一个新的转换矩阵作为3x3 numpy数组的形式:
a c e
b d f
0 0 1
output_dims
= 2¶transform_affine
(points)[源代码]¶仅对给定的值数组执行此转换的仿射部分。
transform(values)
总是等价于 transform_affine(transform_non_affine(values))
.
在非仿射变换中,这通常是不可操作的。在仿射变换中,这相当于 transform(values)
.
接受形状的numpy数组(n x input_dims
)并返回形状的numpy数组(n x output_dims
)
或者,接受一个长度为numpy的数组 input_dims
并返回一个numpy长度数组 output_dims
.
transform_point
(point)[源代码]¶返回单点转换副本的便利函数。
该点按长度顺序给出。 input_dims
. 转换后的点作为长度序列返回 output_dims
.
matplotlib.transforms.
AffineBase
(*args, **kwargs)[源代码]¶基类:matplotlib.transforms.Transform
任何维数的所有仿射变换的基类。
is_affine
= True¶transform
(values)[源代码]¶对给定的值数组执行转换。
接受形状的numpy数组(n x input_dims
)并返回形状的numpy数组(n x output_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 x output_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 x output_dims
)
或者,接受一个长度为numpy的数组 input_dims
并返回一个numpy长度数组 output_dims
.
matplotlib.transforms.
Bbox
(points, **kwargs)[源代码]¶基类:matplotlib.transforms.BboxBase
可变边界框。
参数: |
|
---|
笔记
如果需要创建 Bbox
对象,考虑静态方法 unit()
, from_bounds()
和 from_extents()
.
from_bounds
(x0, y0, width, height)[源代码]¶(StaticMethod)新建 Bbox
从 x0 , y0 , 宽度 和 高度 .
宽度 和 高度 可能是否定的。
ignore
(value)[源代码]¶设置后续调用是否应忽略框的现有边界 update_from_data_xy()
.
True
,后续呼叫 update_from_data_xy()
将忽略 Bbox
.False
,后续呼叫 update_from_data_xy()
将包括 Bbox
.minpos
¶minposx
¶minposy
¶update_from_data_xy
(xy, ignore=None, updatex=True, updatey=True)[源代码]¶更新 Bbox
基于传入的数据。更新后,边界将为正 宽度 和 高度 ; x0 和 y0 将是最小值。
参数: |
---|