Matplotlib 约束布局指南

如何使用约束布局将图形干净地拟合到图形中。

constrained_layout会自动调整子图和装饰,例如图例和颜色条,以使其适合图形窗口,同时尽最大可能保留用户请求的逻辑布局。

constrained_layouttight_layout相似 ,但是使用约束求解器来确定允许它们拟合的轴的大小。

在将任何轴添加到图形之前,必须先激活constrained_layout。这样做的两种方法是

  plt.subplots(constrained_layout=True)

  plt.rcParams['figure.constrained_layout.use'] = True

当您有多个子图时,通常会看到不同轴的标签相互重叠。

Matplotlib 约束布局指南

 

 Matplotlib 约束布局指南

 

 Matplotlib 约束布局指南

 

 Matplotlib 约束布局指南

 

 

彩条

如果使用colorbar() 命令创建颜色条,则需要为其腾出空间。constrained_layout自动执行此操作。

请注意,如果您指定use_gridspec=True它,它将被忽略,因为通过进行了此选项是为了改善布局 tight_layout

Matplotlib 约束布局指南

 

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

Matplotlib 约束布局指南

 

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

Matplotlib 约束布局指南

 

 

字幕

constrained_layout还可以腾出空间suptitle

Matplotlib 约束布局指南

 

 

图例

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

Matplotlib 约束布局指南

 

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

Matplotlib 约束布局指南

 

 constrained_layout=True 明显看出子图缩小

Matplotlib 约束布局指南

 

 为了使图例或其他艺术家不会从子图布局中窃取空间,我们可以leg.set_in_layout(False)

当然,这可能意味着图例将被裁剪,但是如果随后使用调用该图,则可能很有用。

但是请注意,图例的状态必须再次切换才能使已保存的文件起作用,并且如果我们要constrained_layout在打印之前调整轴的大小,

则必须手动触发绘制。fig.savefig('outname.png', bbox_inches='tight')get_in_layout

Matplotlib 约束布局指南

 

 

边距和间距

对于constrained_layout,我们在每个轴的边缘周围实现了填充。此填充设置距图边缘的距离以及相邻图之间的最小距离。

它由关键字参数w_padh_pad函数 以英寸为单位指定set_constrained_layout_pads

Matplotlib 约束布局指南

 

rcParams 

可以在脚本或文件中设置五个rcParammatplotlibrc。它们都有前缀figure.constrained_layout

  • use:是否使用constrained_layout。默认为False
  • w_padh_pad:围绕轴对象填充。
    浮点数代表英寸。默认值为3./72。英寸(3分)
  • wspacehspace:子图组之间的空间。
    浮点数表示要分离的子图宽度的一部分。默认值为0.02。
    Matplotlib 约束布局指南

     

     

 

手动设置轴位置

手动设置轴位置可能有充分的理由。手动调用set_position将设置轴,因此constrained_layout对其不再起作用。(请注意,constrained_layout仍留有空间用于移动的轴)。

Matplotlib 约束布局指南

 

 

上一篇:FFmpeg封装格式处理2-解复用例程


下一篇:GitHub上标星1.5w,被B站使用,flv.js开源作者月薪还不到5k!学历对程序员有多重要?