Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020

Version 3.1.1
matplotlib
Fork me on GitHub

目录

Related Topics

变换

Inheritance diagram of matplotlib.transforms, matplotlib.path

matplotlib.transforms

Matplotlib包含一个用于任意几何转换的框架,用于确定画布上绘制的所有元素的最终位置。

转换被组成树 TransformNode 其实际值取决于其子级的对象。当孩子的内容发生变化时,他们的父母将自动失效。下次访问失效的转换时,将重新计算以反映这些更改。这种无效/缓存方法可以防止不必要的转换重新编译,并有助于提高交互性能。

例如,下面是用于将数据绘制到图表的转换树的图:

../_images/transforms.png

该框架既可用于仿射转换,也可用于非仿射转换。但是,为了提高速度,我们希望尽可能使用后端渲染器执行仿射转换。因此,在一组数据上只执行转换的仿射或非仿射部分是可能的。仿射总是假定发生在非仿射之后。对于任何转换:

full transform == non-affine part + affine part

后端不应该自己处理非仿射转换。

class matplotlib.transforms.Affine2D(matrix=None, **kwargs)[源代码]

基类:matplotlib.transforms.Affine2DBase

可变的二维仿射变换。

从3x3 numpy float数组初始化仿射转换:

a c e
b d f
0 0 1

如果 矩阵 为“无”,使用标识转换初始化。

clear()[源代码]

将基础矩阵重置为标识转换。

static from_values(a, b, c, d, e, f)[源代码]

(staticMethod)从给定值创建一个新的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()[源代码]

(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 对象。

set_matrix(mtx)[源代码]

从3x3 numpy数组设置基础转换矩阵:

a c e
b d f
0 0 1

.

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() .

class matplotlib.transforms.Affine2DBase(*args, **kwargs)[源代码]

基类:matplotlib.transforms.AffineBase

所有二维仿射变换的基类。

使用3x3 numpy数组执行二维仿射转换:

a c e
b d f
0 0 1

此类提供只读接口。对于可变的二维仿射变换,请使用 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)[源代码]

(StaticMethod)创建一个新的转换矩阵作为3x3 numpy数组的形式:

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 x output_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 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 .

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)[源代码]

基类:matplotlib.transforms.BboxBase

可变边界框。

参数:
points : 恩达雷

窗体的2x2 numpy数组 [[x0, y0], [x1, y1]] .

笔记

如果需要创建 Bbox 对象,考虑静态方法 unit()from_bounds()from_extents() .

bounds

返回 (x0y0widthheight

static from_bounds(x0, y0, width, height)[源代码]

(StaticMethod)新建 Bboxx0y0宽度高度 .

宽度高度 可能是否定的。

static from_extents(*args)[源代码]

(staticMethod)从创建新的bbox left底部正确的top .

这个 y -轴向上增加。

get_points()[源代码]

直接获取边界框的点作为表单的numpy数组: [[x0, y0], [x1, y1]] .

ignore(value)[源代码]

设置后续调用是否应忽略框的现有边界 update_from_data_xy() .

价值 : 布尔
intervalx

intervalx 是一对 x 定义边界框的坐标。不能保证从左到右排序。

intervaly

intervaly 是一对 y 定义边界框的坐标。不能保证从下到上排序。

minpos
minposx
minposy
mutated()[源代码]

返回自初始化以来bbox是否已更改。

mutatedx()[源代码]

返回自初始化以来X限制是否已更改。

mutatedy()[源代码]

返回自初始化后Y限制是否已更改。

static null()[源代码]

(StaticMethod)创建新的空值 Bbox 从(inf,inf)到(-inf,-inf)。

p0

p0 是第一对( xy )定义边界框的坐标。它不能保证是左下角。为此,使用 min .

p1

p1 是第二对( xy )定义边界框的坐标。它不能保证是右上角。为此,使用 max .

set(other)[源代码]

从另一个“冻结”边界设置此边界框 Bbox .

set_points(points)[源代码]

直接从窗体的numpy数组设置边界框的点: [[x0, y0], [x1, y1]] . 不执行错误检查,因为此方法主要用于内部。

static unit()[源代码]

(StaticMethod)创建新单元 Bbox 从(0,0)到(1,1)。

update_from_data_xy(xy, ignore=None, updatex=True, updatey=True)[源代码]

更新 Bbox 基于传入的数据。更新后,边界将为正 宽度高度x0y0 将是最小值。

参数:
xy : 恩达雷

二维点的 numpy 数组。

忽视 : 可选的布尔
  • 什么时候? True ,忽略 Bbox .
  • 什么时候? False ,包括 Bbox .
  • 什么时候? None ,使用传递给的最后一个值 ignore() .
更新x,更新y : 可选的布尔

什么时候? True ,更新x/y值。

update_from_path(path, ignore=None, updatex=True, updatey=True)[源代码]

更新 Bbox 基于传入的数据。更新后,边界将为正 宽度高度x0y0 将是最小值。

参数:
path : Path : 路径
忽视 : 可选的布尔
  • 什么时候? True ,忽略 Bbox .
  • 什么时候? False ,包括 Bbox .
  • 什么时候? None ,使用传递给的最后一个值 ignore() .
更新x,更新y : 可选的布尔

什么时候? True ,更新x/y值。

x0

x0 是第一对 x 定义边界框的坐标。 x0 不保证小于