matplotlib.ticker#

刻度定位与格式化#

此模块包含用于配置刻度定位和格式化的类。提供了通用的刻度定位器和格式化器,以及特定领域的自定义定位器和格式化器。

尽管定位器不了解主要或次要刻度,但它们被 Axis 类用于支持主要和次要刻度的定位和格式化。

刻度定位#

Locator 类是所有刻度定位器的基类。定位器负责根据数据限制自动缩放视图限制,以及选择刻度位置。一个有用的半自动刻度定位器是 MultipleLocator。它通过一个基数(例如 10)进行初始化,并选择该基数倍数的坐标轴限制和刻度。

此处定义的 Locator 子类有

AutoLocator

MaxNLocator 带有简单的默认值。这是大多数绘图的默认刻度定位器。

MaxNLocator

在合适的位置找到最多给定数量的刻度间隔。

LinearLocator

从最小值到最大值均匀间隔刻度。

LogLocator

从最小值到最大值对数间隔刻度。

MultipleLocator

刻度和范围是基数的倍数;可以是整数或浮点数。

FixedLocator

刻度位置固定。

IndexLocator

用于索引图(例如,x = range(len(y)))的定位器。

NullLocator

无刻度。

SymmetricalLogLocator

用于 symlog 范数的定位器;对于阈值之外的部分,其工作方式类似于 LogLocator,如果位于限制内部,则添加 0。

AsinhLocator

用于 asinh 范数的定位器,尝试均匀地间隔刻度。

LogitLocator

用于 logit 缩放的定位器。

AutoMinorLocator

当坐标轴为线性且主刻度均匀间隔时,用于次刻度的定位器。它将主刻度间隔细分为指定数量的次刻度间隔,默认为 4 或 5,具体取决于主刻度间隔。

有许多专门用于日期位置的定位器——请参见 dates 模块。

您可以通过继承 Locator 并重写 __call__ 方法来定义自己的定位器,该方法返回一系列位置。您可能还需要重写 autoscale 方法以根据数据限制设置视图限制。

如果您想覆盖默认定位器,请使用上述其中一个或自定义定位器,并将其传递给 x 或 y 轴实例。相关方法有

ax.xaxis.set_major_locator(xmajor_locator)
ax.xaxis.set_minor_locator(xminor_locator)
ax.yaxis.set_major_locator(ymajor_locator)
ax.yaxis.set_minor_locator(yminor_locator)

默认的次要定位器是 NullLocator,即默认情况下没有次要刻度。

注意

Locator 实例不应与多个 AxisAxes 一起使用。因此,不要这样做

locator = MultipleLocator(5)
ax.xaxis.set_major_locator(locator)
ax2.xaxis.set_major_locator(locator)

而是做以下操作

ax.xaxis.set_major_locator(MultipleLocator(5))
ax2.xaxis.set_major_locator(MultipleLocator(5))

刻度格式化#

刻度格式化由 Formatter 的派生类控制。格式化器对单个刻度值进行操作并返回一个字符串到坐标轴。

NullFormatter

刻度上没有标签。

FixedFormatter

手动设置标签的固定字符串。

FuncFormatter

用户定义函数设置标签。

StrMethodFormatter

使用字符串 format 方法。

FormatStrFormatter

使用旧式 sprintf 格式字符串。

ScalarFormatter

标量的默认格式化器:自动选择格式字符串。

LogFormatter

对数坐标轴的格式化器。

LogFormatterExponent

使用 exponent = log_base(value) 格式化对数坐标轴的值。

LogFormatterMathtext

使用 Math text 和 exponent = log_base(value) 格式化对数坐标轴的值。

LogFormatterSciNotation

使用科学记数法格式化对数坐标轴的值。

LogitFormatter

概率格式化器。

EngFormatter

以工程符号格式化标签。

PercentFormatter

将标签格式化为百分比。

您可以通过简单地重写 __call__ 方法,从 Formatter 基类派生自己的格式化器。格式化器类可以访问坐标轴视图和数据限制。

要控制主要和次要刻度标签格式,请使用以下方法之一

ax.xaxis.set_major_formatter(xmajor_formatter)
ax.xaxis.set_minor_formatter(xminor_formatter)
ax.yaxis.set_major_formatter(ymajor_formatter)
ax.yaxis.set_minor_formatter(yminor_formatter)

除了 Formatter 实例,set_major_formatterset_minor_formatter 也接受 str 或函数。 str 输入将在内部被自动生成的 StrMethodFormatter 替换,并使用输入的 str。对于函数输入,将生成并使用带有输入函数的 FuncFormatter

有关设置主要和次要刻度的示例,请参见 主要和次要刻度。有关使用日期定位器和格式化器的更多信息和示例,请参见 matplotlib.dates 模块。

class matplotlib.ticker.AsinhLocator(linear_width, numticks=11, symthresh=0.2, base=10, subs=None)[source]#

基类:Locator

在反双曲正弦 (inverse-sinh) 尺度上均匀放置刻度。

通常与 AsinhScale 类一起使用。

注意

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

参数:
linear_widthfloat

定义准线性区域范围的比例参数。

numticksint, 默认值: 11

沿整个轴线将容纳的大致主刻度数量

symthreshfloat, 默认值: 0.2

数据覆盖的范围近似关于零对称时,低于此小数阈值将具有完全对称的刻度。

baseint, 默认值: 10

用于在对数尺度上舍入刻度位置的数字基数。如果此值小于一,则舍入到最接近的十的幂的整数倍数。

substuple, 默认值: None

数字基数的倍数,通常用于次要刻度,例如当 base=10 时为 (2, 5)。

set_params(numticks=None, symthresh=None, base=None, subs=None)[source]#

在此定位器内设置参数。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
class matplotlib.ticker.AutoLocator[source]#

基类:MaxNLocator

均匀放置刻度,步长和最大刻度数量自动选择。

这是 MaxNLocator 的子类,参数为 nbins = 'auto'steps = [1, 2, 2.5, 5, 10]

要了解非公共参数的值,请查看 MaxNLocator 的默认值。

class matplotlib.ticker.AutoMinorLocator(n=None)[source]#

基类:Locator

均匀放置次要刻度,步长和最大刻度数量自动选择。

Axis 必须使用线性刻度并具有均匀间隔的主刻度。

参数:
nint 或 'auto', 默认值: rcParams["xtick.minor.ndivs"] (默认值: 'auto') 或 rcParams["ytick.minor.ndivs"] (默认值: 'auto')

主刻度间隔的细分数量;例如,n=2 将在主刻度之间中间位置放置一个次要刻度。

如果 n 为 'auto',它将被设置为 4 或 5:如果主刻度之间的距离等于 1、2.5、5 或 10,则可以完美地分成 5 个等距子区间,其长度是 0.05 的倍数;否则,它将被分成 4 个子区间。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
class matplotlib.ticker.EngFormatter(unit='', places=None, sep=' ', *, usetex=None, useMathText=None, useOffset=False)[source]#

基类:ScalarFormatter

使用工程前缀格式化轴值以表示 1000 的幂,并附加指定的单位,例如 10 MHz 而不是 1e7。

参数:
unitstr, 默认值: ""

要使用的单位符号,适用于 1000 的幂的单字母表示。例如,'Hz' 或 'm'。

placesint, 默认值: None

显示数字的精度,以小数点后的位数指定(小数点前将有一到三位数字)。如果为 None,格式化将回退到浮点格式 '%g',它显示最多 6 位*有效*数字,即 places 的等效值在 0 到 5 之间(包含)。

sepstr, 默认值: " "

值与前缀/单位之间使用的分隔符。例如,如果 sep 为 " "(默认值),则得到 '3.14 mV';如果 sep 为 "",则得到 '3.14mV'。除了默认行为,其他一些有用的选项可能包括

  • sep="" 将前缀/单位直接附加到值;

  • sep="\N{THIN SPACE}" (U+2009);

  • sep="\N{NARROW NO-BREAK SPACE}" (U+202F);

  • sep="\N{NO-BREAK SPACE}" (U+00A0)。

usetexbool, 默认值: rcParams["text.usetex"] (默认值: False)

启用/禁用使用 TeX 的数学模式渲染格式化器中的数字。

useMathTextbool, 默认值: rcParams["axes.formatter.use_mathtext"] (默认值: False)

启用/禁用使用 mathtext 渲染格式化器中的数字。

useOffsetbool 或 float, 默认值: False

是否使用基于 \(10^{3*N}\) 前缀的偏移表示法。此功能允许在坐标轴附近显示带有标准 SI 量级前缀的偏移量。偏移量的计算方式类似于 ScalarFormatter 内部的计算方式,但这里保证您将获得一个会使刻度标签超过 3 位数的偏移量。另请参阅 set_useOffset

自 3.10 版本新增。

ENG_PREFIXES = {-30: 'q', -27: 'r', -24: 'y', -21: 'z', -18: 'a', -15: 'f', -12: 'p', -9: 'n', -6: 'µ', -3: 'm', 0: '', 3: 'k', 6: 'M', 9: 'G', 12: 'T', 15: 'P', 18: 'E', 21: 'Z', 24: 'Y', 27: 'R', 30: 'Q'}#
format_data(value)[source]#

以工程符号格式化数字,并在原始数字的 1000 幂次表示后附加一个字母。一些示例如下

>>> format_data(0)        # for self.places = 0
'0'
>>> format_data(1000000)  # for self.places = 1
'1.0 M'
>>> format_data(-1e-6)  # for self.places = 2
'-1.00 µ'
format_eng(num)[source]#

EngFormatter.format_data 的别名

get_offset()[source]#

返回科学记数法,加上偏移量。

set_locs(locs)[source]#

设置刻度的位置。

此方法在计算刻度标签之前被调用,因为某些格式化器需要知道所有刻度位置才能进行计算。

class matplotlib.ticker.FixedFormatter(seq)[source]#

基类:Formatter

仅基于位置而不是值,返回刻度标签的固定字符串。

注意

FixedFormatter 应仅与 FixedLocator 一起使用。否则,标签可能会出现在意想不到的位置。

设置将用于标签的字符串序列 seq

get_offset()[source]#
set_offset_string(ofs)[source]#
class matplotlib.ticker.FixedLocator(locs, nbins=None)[source]#

基类:Locator

在一组固定值处放置刻度。

如果 nbins 为 None,则在所有值处放置刻度。否则,可能位置的 locs 数组将被子采样,以使刻度数量 \(\leq nbins + 1\)。子采样将包括最小绝对值;例如,如果数组中包含零,则零将包含在选定的刻度中。

set_params(nbins=None)[source]#

在此定位器内设置参数。

tick_values(vmin, vmax)[source]#

返回刻度的位置。

注意

因为值是固定的,所以此方法不使用 vmin 和 vmax。

class matplotlib.ticker.FormatStrFormatter(fmt)[source]#

基类:Formatter

使用旧式('%' 运算符)格式字符串来格式化刻度。

格式字符串中应只包含一个变量格式(%)。它将应用于刻度值(而非位置)。

负数值(例如 -1)将使用连字符而非 Unicode 减号;若要获得 Unicode 减号,请使用数学文本将格式说明符用 $ 括起来(例如 "$%g$")。

class matplotlib.ticker.Formatter[source]#

基类: TickHelper

根据刻度值和位置创建字符串。

static fix_minus(s)[source]#

一些类可能希望用正确的Unicode符号 (U+2212) 替换表示负号的连字符,以符合排版规范。当通过 rcParams["axes.unicode_minus"](默认值:True)启用时,这是一个执行此类替换的辅助方法。

format_data(value)[source]#

返回值的完整字符串表示,不指定位置。

format_data_short(value)[source]#

返回刻度值的短字符串版本。

默认为与位置无关的长值。

format_ticks(values)[source]#

一次性返回所有刻度的刻度标签。

get_offset()[source]#
locs = []#
set_locs(locs)[source]#

设置刻度的位置。

此方法在计算刻度标签之前被调用,因为某些格式化器需要知道所有刻度位置才能进行计算。

class matplotlib.ticker.FuncFormatter(func)[source]#

基类:Formatter

使用用户定义的函数进行格式化。

该函数应接受两个输入(刻度值 x 和位置 pos),并返回包含相应刻度标签的字符串。

get_offset()[source]#
set_offset_string(ofs)[source]#
class matplotlib.ticker.IndexLocator(base, offset)[source]#

基类:Locator

在绘制的每第n个点放置刻度。

IndexLocator 假定索引绘图;即刻度放置在 0 和 len(data)(含)之间的整数值处。

每隔 base 个数据点放置刻度,从 offset 开始。

set_params(base=None, offset=None)[source]#

在此定位器中设置参数

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
class matplotlib.ticker.LinearLocator(numticks=None, presets=None)[source]#

基类:Locator

在等间距的值处放置刻度。

首次调用此函数时,它将尝试设置刻度数量以实现良好的刻度划分。此后,刻度数量将固定,以便交互式导航体验良好。

参数:
numticks整型或 None,默认 None

刻度数量。如果为 None,则 numticks = 11。

presets字典或 None,默认值:None

(vmin, vmax) 映射到位置数组的字典。如果当前 (vmin, vmax) 有对应条目,则会覆盖 numticks

property numticks#
set_params(numticks=None, presets=None)[source]#

在此定位器内设置参数。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
view_limits(vmin, vmax)[source]#

尝试智能地选择视图限制。

class matplotlib.ticker.Locator[source]#

基类: TickHelper

确定刻度位置。

请注意,同一个定位器不应在多个 Axis 上使用,因为定位器存储着对 Axis 数据和视图限制的引用。

MAXTICKS = 1000#
nonsingular(v0, v1)[source]#

根据需要调整范围以避免奇异点。

此方法在自动缩放期间调用,如果坐标轴包含任何数据,则 (v0, v1) 设置为坐标轴上的数据限制;否则设置为 (-inf, +inf)

  • 如果 v0 == v1(可能存在一些浮点误差),此方法将返回围绕此值的扩展区间。

  • 如果 (v0, v1) == (-inf, +inf),此方法将返回适当的默认视图限制。

  • 否则,(v0, v1) 将不作修改地返回。

raise_if_exceeds(locs)[source]#

如果 locs 的长度超过 Locator.MAXTICKS,则以 WARNING 级别记录。

此方法旨在在从 __call__ 返回 locs 之前立即调用,以告知用户,以防其 Locator 返回大量刻度,导致 Matplotlib 内存不足。

此方法“奇怪”的名称可以追溯到它会引发异常而不是发出日志的时候。

set_params(**kwargs)[source]#

不执行任何操作,并发出警告。任何不支持 set_params() 函数的定位器类都将调用此方法。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
view_limits(vmin, vmax)[source]#

为从 vmin 到 vmax 的范围选择一个刻度。

子类应覆盖此方法以改变定位器行为。

class matplotlib.ticker.LogFormatter(base=10.0, labelOnlyBase=False, minor_thresholds=None, linthresh=None)[source]#

基类:Formatter

用于格式化对数或对称对数刻度上的刻度的基类。

可以直接实例化,或作为子类使用。

参数:
base浮点型,默认值:10。

所有计算中使用的对数基数。

labelOnlyBase布尔型,默认值:False

如果为 True,则仅在基数的整数次幂处标记刻度。对于主刻度通常为 True,对于次刻度则为 False。

minor_thresholds(子集, 全部),默认值:(1, 0.4)

如果 labelOnlyBase 为 False,这两个数字控制不在基数整数次幂处的刻度标签;通常这些是次刻度。控制参数是坐标轴数据范围的对数。在基数为 10 的典型情况下,它是坐标轴跨越的年代数量,我们可以称之为“numdec”。如果 numdec <= all,则所有次刻度都将被标记。如果 all < numdec <= subset,则只标记次刻度的一个子集,以避免拥挤。如果 numdec > subset,则不标记任何次刻度。

linthreshNone 或浮点型,默认值:None

如果使用了对称对数刻度,其 linthresh 参数必须在此处提供。

备注

必须调用 set_locs 方法以启用由 minor_thresholds 参数控制的子集逻辑。

在某些情况下,例如颜色条,主刻度线和次刻度线之间没有区别;刻度线位置可能手动设置,或者由一个将刻度线放置在基数整数次幂和中间位置的定位器设置。对于这种情况,请使用 minor_thresholds=(np.inf, np.inf) 禁用 minor_thresholds 逻辑,以便所有刻度线都将被标记。

当 'labelOnlyBase' 为 False 时,要禁用次刻度标签,请使用 minor_thresholds=(0, 0)。这是“经典”样式的默认设置。

示例

当视图限制跨度达到 2 个十年时,为了标记次刻度的一个子集;当放大到 0.5 个十年或更少时,为了标记所有刻度,请使用 minor_thresholds=(2, 0.5)

当视图限制跨度达到 1.5 个十年时,为了标记所有次刻度,请使用 minor_thresholds=(1.5, 1.5)

format_data(value)[source]#

返回值的完整字符串表示,不指定位置。

format_data_short(value)[source]#

返回刻度值的短字符串版本。

默认为与位置无关的长值。

set_base(base)[source]#

更改用于标签的基数。

警告

应始终与 LogLocator 使用的基数匹配。

set_label_minor(labelOnlyBase)[source]#

开启或关闭次刻度标签。

参数:
labelOnlyBase布尔型

如果为 True,则仅在基数的整数次幂处标记刻度。

set_locs(locs=None)[source]#

使用坐标轴视图限制来控制哪些刻度被标记。

在当前算法中,locs 参数被忽略。

class matplotlib.ticker.LogFormatterExponent(base=10.0, labelOnlyBase=False, minor_thresholds=None, linthresh=None)[source]#

基类: LogFormatter

使用 exponent = log_base(value) 格式化对数坐标轴的值。

class matplotlib.ticker.LogFormatterMathtext(base=10.0, labelOnlyBase=False, minor_thresholds=None, linthresh=None)[source]#

基类: LogFormatter

使用 exponent = log_base(value) 格式化对数坐标轴的值。

class matplotlib.ticker.LogFormatterSciNotation(base=10.0, labelOnlyBase=False, minor_thresholds=None, linthresh=None)[source]#

基类: LogFormatterMathtext

在对数坐标轴中,按科学计数法格式化值。

class matplotlib.ticker.LogLocator(base=10.0, subs=(1.0,), *, numticks=None)[source]#

基类:Locator

放置对数间隔的刻度。

在值 subs[j] * base**i 处放置刻度。

参数:
base浮点型,默认值:10.0

使用的对数基数,因此主刻度放置在 base**n 处,其中 n 是整数。

subsNone 或 {'auto', 'all'} 或浮点数序列,默认值:(1.0,)

给出放置刻度时基数整数次幂的倍数。默认值 (1.0, ) 仅在基数的整数次幂处放置刻度。允许的字符串值为 'auto''all'。两者都使用基于坐标轴视图限制的算法来确定是否以及如何在基数的整数次幂之间放置刻度: - 'auto':刻度仅放置在整数次幂之间。 - 'all':刻度放置在整数次幂之间和整数次幂处。 - None:等同于 'auto'

numticksNone 或整型,默认值:None

给定坐标轴上允许的最大刻度数量。默认值 None 将在 Locator 已通过 get_tick_space 分配给某个坐标轴时尝试智能选择,否则回退到 9。

nonsingular(vmin, vmax)[source]#

根据需要调整范围以避免奇异点。

此方法在自动缩放期间调用,如果坐标轴包含任何数据,则 (v0, v1) 设置为坐标轴上的数据限制;否则设置为 (-inf, +inf)

  • 如果 v0 == v1(可能存在一些浮点误差),此方法将返回围绕此值的扩展区间。

  • 如果 (v0, v1) == (-inf, +inf),此方法将返回适当的默认视图限制。

  • 否则,(v0, v1) 将不作修改地返回。

set_params(base=None, subs=None, *, numticks=None)[source]#

在此定位器内设置参数。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
view_limits(vmin, vmax)[source]#

尝试智能地选择视图限制。

class matplotlib.ticker.LogitFormatter(*, use_overline=False, one_half='\\frac{1}{2}', minor=False, minor_threshold=25, minor_number=6)[source]#

基类:Formatter

概率格式化器(使用数学文本)。

参数:
use_overline布尔型,默认值:False

如果 x > 1/2,且 x = 1 - v,指示 x 是否应显示为 \(\overline{v}\)。默认显示为 \(1 - v\)

one_half字符串,默认值:r"\frac{1}{2}"

用于表示 1/2 的字符串。

minor布尔值,默认为:False

指示格式化器是否正在格式化次刻度。基本上,次刻度不带标签,除非提供的刻度很少,此时与相邻刻度之间空间最大的刻度会被标记。请参阅其他参数以更改默认行为。

minor_threshold整型,默认值:25

标记部分次刻度位置的最大数量。如果 minor 为 False,此参数无效。

minor_number整型,默认值:6

当刻度数量低于阈值时,被标记的刻度数量。

format_data_short(value)[source]#

返回刻度值的短字符串版本。

默认为与位置无关的长值。

set_locs(locs)[source]#

设置刻度的位置。

此方法在计算刻度标签之前被调用,因为某些格式化器需要知道所有刻度位置才能进行计算。

set_minor_number(minor_number)[source]#

设置当部分次刻度被标记时,要标记的次刻度数量。

参数:
minor_number整型

当刻度数量低于阈值时,被标记的刻度数量。

set_minor_threshold(minor_threshold)[source]#

设置标记次刻度的阈值。

参数:
minor_threshold整型

标记部分次刻度位置的最大数量。如果 minor 为 False,此参数无效。

set_one_half(one_half)[source]#

设置二分之一的显示方式。

one_half字符串

用于表示 1/2 的字符串。

use_overline(use_overline)[source]#

切换 p>1/2 标签的上方线显示模式。

参数:
use_overline布尔型

如果 x > 1/2,且 x = 1 - v,指示 x 是否应显示为 \(\overline{v}\)。默认显示为 \(1 - v\)

class matplotlib.ticker.LogitLocator(minor=False, *, nbins='auto')[source]#

基类:MaxNLocator

在 Logit 刻度上等间距放置刻度。

参数:
nbins整型或 'auto',可选

刻度数量。仅当 minor 为 False 时使用。

minor布尔值,默认为:False

指示此定位器是否用于次刻度。

property minor#
nonsingular(vmin, vmax)[source]#

根据需要调整范围以避免奇异点。

此方法在自动缩放期间调用,如果坐标轴包含任何数据,则 (v0, v1) 设置为坐标轴上的数据限制;否则设置为 (-inf, +inf)

  • 如果 v0 == v1(可能存在一些浮点误差),此方法将返回围绕此值的扩展区间。

  • 如果 (v0, v1) == (-inf, +inf),此方法将返回适当的默认视图限制。

  • 否则,(v0, v1) 将不作修改地返回。

set_params(minor=None, **kwargs)[source]#

在此定位器内设置参数。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
class matplotlib.ticker.MaxNLocator(nbins=None, **kwargs)[source]#

基类:Locator

放置等间距的刻度,并限制刻度总数。

找到不超过 \(nbins + 1\) 个刻度位于视图限制内的合适刻度位置。超出限制的位置也会添加,以支持自动缩放。

参数:
nbins整型或 'auto',默认值:10

最大间隔数;比最大刻度数少一个。如果字符串为 'auto',则 bin 的数量将根据坐标轴的长度自动确定。

steps类数组,可选

可接受的刻度倍数序列,从 1 开始,到 10 结束。例如,如果 steps=[1, 2, 4, 5, 10],那么 20, 40, 60 或 0.4, 0.6, 0.8 都是可能的刻度集,因为它们是 2 的倍数。30, 60, 90 不会被生成,因为 3 没有出现在此示例步长列表中。

integer布尔型,默认值:False

如果为 True,刻度将只取整数值,前提是在视图限制内至少找到 min_n_ticks 个整数。

symmetric布尔型,默认值:False

如果为 True,自动缩放将产生一个关于零对称的范围。

prune{'lower', 'upper', 'both', None},默认值:None

如果刻度恰好落在坐标轴的边缘,则移除“lower”刻度、“upper”刻度或“both”两侧的刻度(这通常发生在 rcParams["axes.autolimit_mode"](默认值:'data')为 'round_numbers' 时)。移除此类刻度对于堆叠或并列图表特别有用,其中一个坐标轴的上刻度与其上方坐标轴的下刻度重叠。

min_n_ticks整型,默认值:2

如有必要,放宽 nbins 和整数约束以获得此最小刻度数量。

default_params = {'integer': False, 'min_n_ticks': 2, 'nbins': 10, 'prune': None, 'steps': None, 'symmetric': False}#
set_params(**kwargs)[source]#

为此定位器设置参数。

参数:
nbins整型或 'auto',可选

参见 MaxNLocator

steps类数组,可选

参见 MaxNLocator

integer布尔型,可选

参见 MaxNLocator

symmetric布尔型,可选

参见 MaxNLocator

prune{'lower', 'upper', 'both', None},可选

参见 MaxNLocator

min_n_ticks整型,可选

参见 MaxNLocator

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
view_limits(dmin, dmax)[source]#

为从 vmin 到 vmax 的范围选择一个刻度。

子类应覆盖此方法以改变定位器行为。

class matplotlib.ticker.MultipleLocator(base=1.0, offset=0.0)[source]#

基类:Locator

在基数的每个整数倍加上一个偏移量处放置刻度。

参数:
base浮点型 > 0,默认值:1.0

刻度之间的间隔。

offset浮点型,默认值:0.0

添加到基数每个倍数的值。

在版本 3.8 中添加。

set_params(base=None, offset=None)[source]#

在此定位器内设置参数。

参数:
base浮点型 > 0,可选

刻度之间的间隔。

offset浮点型,可选

添加到基数每个倍数的值。

在版本 3.8 中添加。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
view_limits(dmin, dmax)[source]#

将视图限制设置为包含数据的最近刻度值。

class matplotlib.ticker.NullFormatter[source]#

基类:Formatter

始终返回空字符串。

class matplotlib.ticker.NullLocator[source]#

基类:Locator

无刻度

tick_values(vmin, vmax)[source]#

返回刻度的位置。

注意

由于值为 Null,此方法不使用 vmin 和 vmax。

class matplotlib.ticker.PercentFormatter(xmax=100, decimals=None, symbol='%', is_latex=False)[source]#

基类:Formatter

将数字格式化为百分比。

参数:
xmax浮点数

确定数字如何转换为百分比。xmax 是对应 100% 的数据值。百分比计算公式为 x / xmax * 100。因此,如果数据已按百分比缩放,xmax 将为 100。另一种常见情况是 xmax 为 1.0。

decimalsNone 或整型

小数点后的位数。如果为 None(默认值),则会自动计算位数。

symbol字符串或 None

将附加到标签的字符串。它可以是 None 或空字符串,表示不使用任何符号。每当 LaTeX 模式启用时,symbol 中的 LaTeX 特殊字符都会被转义,除非 is_latexTrue

is_latex布尔型

如果为 False,则 symbol 中保留的 LaTeX 字符将被转义。

convert_to_pct(x)[source]#
format_pct(x, display_range)[source]#

将数字格式化为百分比,带正确的小数位数,并添加百分比符号(如果有)。

如果 self.decimalsNone,则小数点后的位数将根据坐标轴的 display_range 设置,如下所示:

display_range

decimals

sample

>50

0

x = 34.5 => 35%

>5

1

x = 34.5 => 34.5%

>0.5

2

x = 34.5 => 34.50%

...

...

...

此方法对于极小或极大坐标轴范围效果不佳。它假定图表上的值是按合理比例显示的百分比。

property symbol#

配置的百分号符号(字符串形式)。

如果通过 rcParams["text.usetex"](默认值:False)启用 LaTeX,则字符串中的特殊字符 {'#', '$', '%', '&', '~', '_', '^', '\', '{', '}'} 将自动转义。

class matplotlib.ticker.ScalarFormatter(useOffset=None, useMathText=None, useLocale=None, *, usetex=None)[source]#

基类:Formatter

将刻度值格式化为数字。

参数:
useOffset布尔型或浮点型,默认值:rcParams["axes.formatter.useoffset"](默认值:True

是否使用偏移表示法。参见 set_useOffset

useMathTextbool, 默认值: rcParams["axes.formatter.use_mathtext"] (默认值: False)

是否使用花式数学格式。参见 set_useMathText

useLocale布尔型,默认值:rcParams["axes.formatter.use_locale"](默认值:False)。

是否使用区域设置进行小数符号和正号。参见 set_useLocale

usetexbool, 默认值: rcParams["text.usetex"] (默认值: False)

启用/禁用使用 TeX 的数学模式渲染格式化器中的数字。

自 3.10 版本新增。

备注

除了上述参数外,科学计数法与浮点表示法的格式化可以通过 set_scientificset_powerlimits 配置。

偏移表示法和科学计数法

偏移表示法和科学计数法乍看起来非常相似。两者都从格式化的刻度值中分离出一些信息,并将其显示在坐标轴末端。

  • 科学计数法分离出数量级,即一个乘性缩放因子,例如 1e6

  • 偏移表示法分离出一个加性常数,例如 +1e6。偏移表示法的标签总是以 +- 符号作为前缀,因此可以与数量级标签区分开来。

以下 x 轴限制为 1_000_0001_000_010 的图表说明了不同的格式化方式。请注意 x 轴右边缘的标签。

(源代码 code, 2x.png, png)

format_data(value)[source]#

返回值的完整字符串表示,不指定位置。

format_data_short(value)[source]#

返回刻度值的短字符串版本。

默认为与位置无关的长值。

get_offset()[source]#

返回科学记数法,加上偏移量。

get_useLocale()[source]#

返回是否使用区域设置进行格式化。

get_useMathText()[source]#

返回是否使用花式数学格式。

get_useOffset()[source]#

返回偏移表示法的自动模式是否激活。

如果 set_useOffset(True),则返回 True;如果设置了显式偏移,例如 set_useOffset(1000),则返回 False。

get_usetex()[source]#

返回是否启用 TeX 的数学模式进行渲染。

set_locs(locs)[source]#

设置刻度的位置。

此方法在计算刻度标签之前被调用,因为某些格式化器需要知道所有刻度位置才能进行计算。

set_powerlimits(lims)[source]#

设置科学计数法的尺寸阈值。

参数:
lims(整型, 整型)

一个包含 10 的幂的元组 (min_exp, max_exp),用于确定转换阈值。对于可以表示为 \(a \times 10^\mathrm{exp}\)\(1 <= |a| < 10\) 的数字,如果 exp <= min_expexp >= max_exp,将使用科学计数法。

默认限制由 rcParams["axes.formatter.limits"] 控制(默认值:[-5, 6])。

特别是,exp 等于阈值的数字将以科学计数法书写。

通常,min_exp 将为负数,max_exp 将为正数。

例如,formatter.set_powerlimits((-3, 4)) 将提供以下格式:\(1 \times 10^{-3}, 9.9 \times 10^{-3}, 0.01,\) \(9999, 1 \times 10^4\)

set_scientific(b)[source]#

开启或关闭科学计数法。

set_useLocale(val)[source]#

设置是否使用区域设置进行小数符号和正号。

参数:
val布尔型或 None

None 将重置为 rcParams["axes.formatter.use_locale"](默认值:False)。

set_useMathText(val)[source]#

设置是否使用花式数学格式。

如果启用,科学计数法将格式化为 \(1.2 \times 10^3\)

参数:
val布尔型或 None

None 将重置为 rcParams["axes.formatter.use_mathtext"](默认值:False)。

set_useOffset(val)[source]#

设置是否使用偏移表示法。

当格式化一组值相对于其范围较大时,格式化器可以分离出一个加性常数。这可以缩短格式化后的数字,使其在坐标轴上绘制时不太可能重叠。

参数:
val布尔型或浮点型
  • 如果为 False,则不使用偏移表示法。

  • 如果为 True(=自动模式),如果偏移表示法能显著缩短剩余数字,则使用它。具体行为由 rcParams["axes.formatter.offset_threshold"] 控制(默认值:4)。

  • 如果是一个数字,则强制使用给定值的偏移量。

示例

启用偏移表示法后,这些值

100_000, 100_002, 100_004, 100_006, 100_008

将被格式化为 0, 2, 4, 6, 8,并加上一个偏移量 +1e5,该偏移量会写在坐标轴的边缘。

set_usetex(val)[source]#

设置是否使用 TeX 的数学模式在格式化器中渲染数字。

property useLocale#

返回是否使用区域设置进行格式化。

property useMathText#

返回是否使用花式数学格式。

property useOffset#

返回偏移表示法的自动模式是否激活。

如果 set_useOffset(True),则返回 True;如果设置了显式偏移,例如 set_useOffset(1000),则返回 False。

property usetex#

返回是否启用 TeX 的数学模式进行渲染。

class matplotlib.ticker.StrMethodFormatter(fmt)[source]#

基类:Formatter

使用新式格式字符串(如 str.format 所用)来格式化刻度。

用于刻度值的字段必须标记为 x,用于刻度位置的字段必须标记为 pos

在格式化负数值时,格式化器将遵循 rcParams["axes.unicode_minus"](默认值: True)。

通常不需要显式构造 StrMethodFormatter 对象,因为 set_major_formatter 直接接受格式字符串本身。

class matplotlib.ticker.SymmetricalLogLocator(transform=None, subs=None, linthresh=None, base=None)[source]#

基类:Locator

在零附近线性间隔放置刻度,并在超过阈值后对数间隔放置。

参数:
transformSymmetricalLogTransform, 可选

如果设置,定义了对称对数变换的 baselinthresh

base, linthresh浮点数, 可选

对称对数变换的 baselinthresh,如 SymmetricalLogScale 文档中所述。这些参数仅在 transform 未设置时使用。

subs浮点数序列, 默认值: [1]

刻度放置在基数整数次幂的倍数处,即刻度位于 [sub * base**i for i in ... for sub in subs]

备注

必须提供 transform,或者同时提供 baselinthresh

set_params(subs=None, numticks=None)[source]#

在此定位器内设置参数。

tick_values(vmin, vmax)[source]#

返回给定 vminvmax 的定位刻度值。

注意

要获取关联 axis 自动定义 vmin 和 vmax 值的刻度位置,只需调用 Locator 实例

>>> print(type(loc))
<type 'Locator'>
>>> print(loc())
[1, 2, 3, 4]
view_limits(vmin, vmax)[source]#

尝试智能地选择视图限制。

class matplotlib.ticker.TickHelper[source]#

基类: object

axis = None#
create_dummy_axis(**kwargs)[source]#
set_axis(axis)[source]#

Inheritance diagram of matplotlib.ticker