matplotlib.scale#

比例尺定义了数据值在轴上的分布,例如对数缩放。它们被定义为 ScaleBase 的子类。

另请参阅 axes.Axes.set_xscale 以及文档中的比例示例。

有关定义自定义比例的完整示例,请参阅 自定义比例

Matplotlib 还支持非可分离变换,这些变换同时作用于 Axis。它们被称为投影,定义在 matplotlib.projections 中。

class matplotlib.scale.AsinhScale(axis, *, linear_width=1.0, base=10, subs='auto', **kwargs)[源代码][源代码]#

基类:ScaleBase

基于反双曲正弦(asinh)的准对数尺度

对于接近零的值,这本质上是一个线性刻度,但对于大数值(无论是正还是负),它是渐近对数的。这种线性和对数刻度之间的过渡是平滑的,与 `.SymmetricalLogScale`(“symlog”)刻度相比,函数梯度没有不连续性。

具体来说,轴坐标 \(a\) 的变换为 \(a \rightarrow a_0 \sinh^{-1} (a / a_0)\),其中 \(a_0\) 是变换线性区域的有效宽度。在该区域内,变换为 \(a \rightarrow a + \mathcal{O}(a^3)\)。对于较大的 \(a\) 值,变换表现为 \(a \rightarrow a_0 \, \mathrm{sgn}(a) \ln |a| + \mathcal{O}(1)\)

备注

此API是暂定的,可能会根据早期用户反馈在未来进行修订。

参数:
linear_widthfloat, 默认值: 1

尺度参数(在其他地方称为 \(a_0\))定义了准线性区域的扩展范围,以及变换变为渐近对数时的坐标值。

基础int, 默认值: 10

用于在对数刻度上舍入刻度位置的数字基数。如果这个值小于一,那么舍入是到最接近的十的幂的整数倍。

subsint 序列

用于次刻度的小数基数的倍数。如果设置为 'auto',这将使用内置的默认值,例如对于 base=10,使用 (2, 5)。

auto_tick_multipliers = {3: (2,), 4: (2,), 5: (2,), 8: (2, 4), 10: (2, 5), 16: (2, 4, 8), 64: (4, 16), 1024: (256, 512)}#
get_transform()[源代码][源代码]#

返回与此比例关联的 Transform 对象。

property linear_width#

!! 由 numpydoc 处理 !!

name = 'asinh'#
set_default_locators_and_formatters(axis)[源代码][源代码]#

的定位器和格式化器设置为适合此比例的实例。

class matplotlib.scale.AsinhTransform(linear_width)[源代码][源代码]#

基类:Transform

AsinhScale 使用的反双曲正弦变换

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

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.scale.FuncScale(axis, functions)[源代码][源代码]#

基类:ScaleBase

为轴提供一个用户自定义函数的任意刻度。

参数:
: Axis

比例尺的轴。

函数(可调用对象,可调用对象)

用于缩放的正向和反向函数的二元组。正向函数必须是单调的。

两个函数必须具有以下签名:

def forward(values: array-like) -> array-like
get_transform()[源代码][源代码]#

返回与此刻度关联的 FuncTransform

name = 'function'#
set_default_locators_and_formatters(axis)[源代码][源代码]#

的定位器和格式化器设置为适合此比例的实例。

class matplotlib.scale.FuncScaleLog(axis, functions, base=10)[源代码][源代码]#

基类:LogScale

提供一个用户自定义函数的任意刻度,然后将其放在对数轴上。

参数:
: Axis

比例尺的轴。

函数(可调用对象,可调用对象)

用于缩放的正向和反向函数的二元组。正向函数必须是单调的。

两个函数必须具有以下签名:

def forward(values: array-like) -> array-like
基础float, 默认值: 10

刻度的对数基数。

property base#

!! 由 numpydoc 处理 !!

get_transform()[源代码][源代码]#

返回与此比例关联的 Transform

name = 'functionlog'#
class matplotlib.scale.FuncTransform(forward, inverse)[源代码][源代码]#

基类:Transform

一个简单的变换,接受任意的前向和逆变换函数。

参数:
向前可调用

变换的前向函数。这个函数必须有逆函数,并且为了最佳表现,应该是单调的。它必须有以下签名:

def forward(values: array-like) -> array-like
反向可调用

前向函数的逆函数。签名与 forward 相同。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

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.scale.InvertedAsinhTransform(linear_width)[源代码][源代码]#

基类:Transform

AsinhScale 使用的双曲正弦变换

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

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.scale.InvertedLogTransform(base)[源代码][源代码]#

基类:Transform

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

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.scale.InvertedSymmetricalLogTransform(base, linthresh, linscale)[源代码][源代码]#

基类:Transform

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

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.scale.LinearScale(axis)[源代码][源代码]#

基类:ScaleBase

默认的线性刻度。

get_transform()[源代码][源代码]#

返回线性缩放的变换,这仅仅是 IdentityTransform

name = 'linear'#
set_default_locators_and_formatters(axis)[源代码][源代码]#

的定位器和格式化器设置为适合此比例的实例。

class matplotlib.scale.LogScale(axis, *, base=10, subs=None, nonpositive='clip')[源代码][源代码]#

基类:ScaleBase

标准对数刻度。特别注意只绘制正值。

参数:
: Axis

比例尺的轴。

基础float, 默认值: 10

对数的底数。

非正数{'clip', 'mask'}, 默认: 'clip'

确定非正值的行为。它们可以被屏蔽为无效,或者被裁剪为一个非常小的正值。

subsint 序列,默认值:None

在每个主刻度之间放置次刻度的位置。例如,在log10刻度中,[2, 3, 4, 5, 6, 7, 8, 9] 将在每个主刻度之间放置8个对数间隔的次刻度。

property base#

!! 由 numpydoc 处理 !!

get_transform()[源代码][源代码]#

返回与此比例关联的 LogTransform

limit_range_for_scale(vmin, vmax, minpos)[源代码][源代码]#

将域限制为正值。

name = 'log'#
set_default_locators_and_formatters(axis)[源代码][源代码]#

的定位器和格式化器设置为适合此比例的实例。

class matplotlib.scale.LogTransform(base, nonpositive='clip')[源代码][源代码]#

基类:Transform

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

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.scale.LogisticTransform(nonpositive='mask')[源代码][源代码]#

基类:Transform

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

transform_non_affine(values)[源代码][源代码]#

对数转换(以10为底)

class matplotlib.scale.LogitScale(axis, nonpositive='mask', *, one_half='\\frac{1}{2}', use_overline=False)[源代码][源代码]#

基类:ScaleBase

介于零和一之间(均不包括)的数据的对数几率尺度。

这个尺度在接近零和一的地方类似于对数尺度,而在0.5附近几乎是线性的。它将区间 ]0, 1[ 映射到 ]-infty, +infty[。

参数:
: Axis

当前未使用。

非正数{'mask', 'clip'}

确定超出开区间 ]0, 1[ 的值的行为。它们可以被屏蔽为无效,或者被裁剪到一个非常接近 0 或 1 的数字。

use_overlinebool, 默认值: False

指示在概率接近1时使用生存符号(overline{x})代替标准符号(1-x)。

one_half : str, 默认值: r"frac{1}{2}"str, 默认值: r"frac{1}{2}"

用于刻度格式化程序以表示1/2的字符串。

get_transform()[源代码][源代码]#

返回与此刻度关联的 LogitTransform

limit_range_for_scale(vmin, vmax, minpos)[源代码][源代码]#

将域限制在 0 和 1 之间的值(不包括 0 和 1)。

name = 'logit'#
set_default_locators_and_formatters(axis)[源代码][源代码]#

的定位器和格式化器设置为适合此比例的实例。

class matplotlib.scale.LogitTransform(nonpositive='mask')[源代码][源代码]#

基类:Transform

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

transform_non_affine(values)[源代码][源代码]#

logit 变换(以10为底),掩码或裁剪

class matplotlib.scale.ScaleBase(axis)[源代码][源代码]#

基类:object

所有刻度的基类。

比例尺是可分离的变换,作用于单一维度。

子类应重写

名称

刻度的名称。

get_transform()

返回一个 Transform 的方法,该方法将数据坐标转换为缩放坐标。此转换应该是可逆的,以便例如鼠标位置可以转换回数据坐标。

set_default_locators_and_formatters()

为使用此比例的 Axis 设置默认定位器和格式化器的方法。

limit_range_for_scale()

一个可选的方法,用于“修正”轴的范围为可接受的值,例如,限制对数刻度轴为正值。

构建一个新的比例尺。

注释

以下说明适用于比例实现者。

出于向后兼容的原因,比例尺将 Axis 对象作为第一个参数。然而,这个参数不应被使用:一个比例尺对象应能同时被多个 Axis 对象使用。

get_transform()[源代码][源代码]#

返回与此比例关联的 Transform 对象。

limit_range_for_scale(vmin, vmax, minpos)[源代码][源代码]#

返回范围 vmin, vmax,限制在此比例支持的域内(如果有)。

minpos 应该是数据中的最小正值。这在对数刻度中用于确定最小值。

set_default_locators_and_formatters(axis)[源代码][源代码]#

的定位器和格式化器设置为适合此比例的实例。

class matplotlib.scale.SymmetricalLogScale(axis, *, base=10, linthresh=2, subs=None, linscale=1)[源代码][源代码]#

基类:ScaleBase

对称对数尺度在原点的正负方向上都是对数的。

由于接近零的值趋向于无穷大,因此需要在零附近有一个线性范围。参数 linthresh 允许用户指定此范围的大小(-linthresh, linthresh)。

参数:
基础float, 默认值: 10

对数的底数。

linthreshfloat, 默认值: 2

定义范围 (-x, x),在该范围内绘图是线性的。这避免了绘图在零附近趋向无穷大。

subsint 序列

在每个主刻度之间放置副刻度的位置。例如,在log10刻度中:[2, 3, 4, 5, 6, 7, 8, 9] 将在每个主刻度之间放置8个对数间隔的副刻度。

linscale浮点数,可选

这允许线性范围 (-linthresh, linthresh) 相对于对数范围进行拉伸。其值是用于线性范围每一半的十进制数。例如,当 linscale == 1.0(默认值)时,线性范围的正负两半所使用的空间将等于对数范围中的一十年。

构建一个新的比例尺。

注释

以下说明适用于比例实现者。

出于向后兼容的原因,比例尺将 Axis 对象作为第一个参数。然而,这个参数不应被使用:一个比例尺对象应能同时被多个 Axis 对象使用。

property base#

!! 由 numpydoc 处理 !!

get_transform()[源代码][源代码]#

返回与此刻度关联的 SymmetricalLogTransform

property linscale#

!! 由 numpydoc 处理 !!

property linthresh#

!! 由 numpydoc 处理 !!

name = 'symlog'#
set_default_locators_and_formatters(axis)[源代码][源代码]#

的定位器和格式化器设置为适合此比例的实例。

class matplotlib.scale.SymmetricalLogTransform(base, linthresh, linscale)[源代码][源代码]#

基类:Transform

参数:
简称str

一个表示转换“名称”的字符串。该名称除了在 DEBUG=True 时提高 str(transform) 的可读性外,没有其他意义。

has_inverse = True#

如果此变换有对应的逆变换,则为真。

input_dims = 1#

此变换的输入维度数量。必须在子类中被重写(使用整数)。

inverted()[源代码][源代码]#

返回相应的逆变换。

它持有 x == self.inverted().transform(self.transform(x))

此方法的返回值应视为临时的。对 self 的更新不会导致其反转副本的相应更新。

is_separable = True#

如果此变换在x和y维度上是可分离的,则为True。

output_dims = 1#

此变换的输出维度数量。必须在子类中用整数重写。

transform_non_affine(values)[源代码][源代码]#

仅应用此变换的非仿射部分。

transform(values) 总是等同于 transform_affine(transform_non_affine(values))

在非仿射变换中,这通常等同于 transform(values)。在仿射变换中,这始终是一个空操作。

参数:
数组

输入值为长度 input_dims 的数组或形状为 (N, input_dims)。

返回:
数组

输出值为一个长度为 output_dims 的数组,或形状为 (N, output_dims),取决于输入。

matplotlib.scale.get_scale_names()[源代码][源代码]#

返回可用比例的名称。

matplotlib.scale.register_scale(scale_class)[源代码][源代码]#

注册一种新的刻度类型。

参数:
scale_class : ScaleBase 的子类子类

要注册的刻度。

matplotlib.scale.scale_factory(scale, axis, **kwargs)[源代码][源代码]#

按名称返回一个比例类。

参数:
规模{'asinh', 'function', 'functionlog', 'linear', 'log', 'logit', 'symlog'}
: Axis