matplotlib.layout_engine#

Figure中布局元素的类。

Figure具有一个layout_engine属性,该属性保存此处定义的LayoutEngine子类(如果为None则表示无布局)。在绘制时,会调用figure.get_layout_engine().execute(),其目标通常是重新排列Figure上的Axes以生成令人愉悦的布局。这类似于draw回调,但有两个不同点。首先,在打印时,我们会禁用布局引擎以进行最终绘制。其次,在创建Figure时了解布局引擎非常有用。特别是,不同布局引擎的colorbar制作方式不同(出于历史原因)。

Matplotlib内置了两种布局引擎

第三方可以通过子类化LayoutEngine来创建自己的布局引擎。

class matplotlib.layout_engine.ConstrainedLayoutEngine(*, h_pad=None, w_pad=None, hspace=None, wspace=None, rect=(0, 0, 1, 1), compress=False, **kwargs)[source]#

实现constrained_layout几何管理。详见约束布局指南

初始化constrained_layout设置。

参数:
h_pad, w_padfloat

Axes元素周围的填充(英寸)。默认为rcParams["figure.constrained_layout.h_pad"](默认值:0.04167)和rcParams["figure.constrained_layout.w_pad"](默认值:0.04167)。

hspace, wspacefloat

Figure中用于Axes之间空间的百分比。这些空间均匀分布在Axes之间的间隙中。对于三列布局,0.2的值表示每列之间有Figure宽度的0.1空间。如果h/wspace < h/w_pad,则使用填充。默认为rcParams["figure.constrained_layout.hspace"](默认值:0.02)和rcParams["figure.constrained_layout.wspace"](默认值:0.02)。

rect4个浮点数的元组

在Figure坐标中执行约束布局的矩形(左、下、宽、高),每个值介于0-1之间。

compressbool

是否移动Axes以消除它们之间的空白。这对于固定长宽比Axes的简单网格(例如图像网格)很有用。详见固定长宽比Axes的网格:"压缩"布局

property adjust_compatible#

如果布局引擎与subplots_adjust兼容,则返回布尔值。

property colorbar_gridspec#

如果布局引擎使用网格规范创建colorbar,则返回布尔值。

execute(fig)[source]#

执行constrained_layout并相应地移动和调整Axes大小。

参数:
fig要执行布局的Figure
get()[source]#

返回布局引擎参数的副本。

set(*, h_pad=None, w_pad=None, hspace=None, wspace=None, rect=None)[source]#

设置constrained_layout的填充。

参数:
h_pad, w_padfloat

Axes元素周围的填充(英寸)。默认为rcParams["figure.constrained_layout.h_pad"](默认值:0.04167)和rcParams["figure.constrained_layout.w_pad"](默认值:0.04167)。

hspace, wspacefloat

Figure中用于Axes之间空间的百分比。这些空间均匀分布在Axes之间的间隙中。对于三列布局,0.2的值表示每列之间有Figure宽度的0.1空间。如果h/wspace < h/w_pad,则使用填充。默认为rcParams["figure.constrained_layout.hspace"](默认值:0.02)和rcParams["figure.constrained_layout.wspace"](默认值:0.02)。

rect4个浮点数的元组

在Figure坐标中执行约束布局的矩形(左、下、宽、高),每个值介于0-1之间。

class matplotlib.layout_engine.LayoutEngine(**kwargs)[source]#

Matplotlib布局引擎的基类。

布局引擎可以在实例化时或随时通过set_layout_engine传递给Figure。一旦附加到Figure,布局引擎的execute函数就会在绘制时被draw调用,提供一个特殊的绘制时钩子。

注意

但是,请注意布局引擎会影响colorbar的创建,因此set_layout_engine应在创建任何colorbar之前调用。

目前,在操作Figure时会参考LayoutEngine类的两个属性

要实现自定义的LayoutEngine

  1. 重写_adjust_compatible_colorbar_gridspec

  2. 重写LayoutEngine.set以更新self._params

  3. 用您的实现重写LayoutEngine.execute

property adjust_compatible#

如果布局引擎与subplots_adjust兼容,则返回布尔值。

property colorbar_gridspec#

如果布局引擎使用网格规范创建colorbar,则返回布尔值。

execute(fig)[source]#

在给定Figure fig上执行布局。

get()[source]#

返回布局引擎参数的副本。

set(**kwargs)[source]#

设置布局引擎的参数。

class matplotlib.layout_engine.PlaceHolderLayoutEngine(adjust_compatible, colorbar_gridspec, **kwargs)[source]#

此布局引擎完全不调整Figure布局。

LayoutEngine的目的是在用户移除布局引擎时充当占位符,以确保以后无法设置不兼容的LayoutEngine

参数:
adjust_compatible, colorbar_gridspecbool

允许PlaceHolderLayoutEngine镜像其正在替换的任何布局引擎的行为。

property adjust_compatible#

如果布局引擎与subplots_adjust兼容,则返回布尔值。

property colorbar_gridspec#

如果布局引擎使用网格规范创建colorbar,则返回布尔值。

execute(fig)[source]#

不执行任何操作。

get()[source]#

返回布局引擎参数的副本。

set(**kwargs)[source]#

设置布局引擎的参数。

class matplotlib.layout_engine.TightLayoutEngine(*, pad=1.08, h_pad=None, w_pad=None, rect=(0, 0, 1, 1), **kwargs)[source]#

实现tight_layout几何管理。详见紧凑布局指南

初始化tight_layout引擎。

参数:
pad浮点型, 默认值: 1.08

图形边缘和子图边缘之间的填充,作为字体大小的一部分。

h_pad, w_padfloat

相邻子图边缘之间的填充(高度/宽度)。默认为 pad

rect元组 (left, bottom, right, top),默认值: (0, 0, 1, 1)。

归一化Figure坐标中的矩形,子图(包括标签)将适应其中。

property adjust_compatible#

如果布局引擎与subplots_adjust兼容,则返回布尔值。

property colorbar_gridspec#

如果布局引擎使用网格规范创建colorbar,则返回布尔值。

execute(fig)[source]#

执行紧凑布局(tight_layout)。

根据填充量决定子图参数,使Axes标签不被其他标签和Axes覆盖。

参数:
fig要执行布局的Figure
get()[source]#

返回布局引擎参数的副本。

set(*, pad=None, w_pad=None, h_pad=None, rect=None)[source]#

设置紧凑布局的填充。

参数:
pad浮点数

图形边缘和子图边缘之间的填充,作为字体大小的一部分。

w_pad, h_padfloat

相邻子图边缘之间的填充(宽度/高度)。默认为pad

rect元组 (left, bottom, right, top)

归一化Figure坐标中的矩形,子图(包括标签)将适应其中。