如何使用约束布局将图形干净地拟合到图形中。
constrained_layout会自动调整子图和装饰,例如图例和颜色条,以使其适合图形窗口,同时尽最大可能保留用户请求的逻辑布局。
constrained_layout与tight_layout相似 ,但是使用约束求解器来确定允许它们拟合的轴的大小。
在将任何轴添加到图形之前,必须先激活constrained_layout。这样做的两种方法是
使用subplots()或 各自的参数figure(),例如:
plt.subplots(constrained_layout=True)
plt.rcParams[‘figure.constrained_layout.use‘] = True
当您有多个子图时,通常会看到不同轴的标签相互重叠。




如果使用colorbar() 命令创建颜色条,则需要为其腾出空间。constrained_layout自动执行此操作。
请注意,如果您指定use_gridspec=True它,它将被忽略,因为通过进行了此选项是为了改善布局 tight_layout

如果您为的ax参数colorbar指定轴列表(或其他可迭代的容器) ,则constrained_layout将占用指定轴的空间。

如果从轴网格内部指定轴列表,则颜色栏将适当地窃取空间并留出间隙,但所有子图的大小均相同。

constrained_layout还可以腾出空间suptitle。

图例可以放置在其父轴的外部。约束布局旨在处理Axes.legend()。但是,约束布局无法处理通过Figure.legend()(尚未)创建的图例 。

但是,这将从子图布局中窃取空间:

constrained_layout=True 明显看出子图缩小

为了使图例或其他艺术家不会从子图布局中窃取空间,我们可以leg.set_in_layout(False)。
当然,这可能意味着图例将被裁剪,但是如果随后使用调用该图,则可能很有用。
但是请注意,图例的状态必须再次切换才能使已保存的文件起作用,并且如果我们要constrained_layout在打印之前调整轴的大小,
则必须手动触发绘制。fig.savefig(‘outname.png‘, bbox_inches=‘tight‘)get_in_layout

对于constrained_layout,我们在每个轴的边缘周围实现了填充。此填充设置距图边缘的距离以及相邻图之间的最小距离。
它由关键字参数w_pad和h_pad函数 以英寸为单位指定set_constrained_layout_pads:

可以在脚本或文件中设置五个rcParammatplotlibrc。它们都有前缀figure.constrained_layout:
use:是否使用constrained_layout。默认为Falsew_pad,h_pad:围绕轴对象填充。wspace,hspace:子图组之间的空间。
手动设置轴位置可能有充分的理由。手动调用set_position将设置轴,因此constrained_layout对其不再起作用。(请注意,constrained_layout仍留有空间用于移动的轴)。

原文:https://www.cnblogs.com/leon-joker/p/12779536.html