matplotlib 进阶之Constrained Layout Guide

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib 进阶之Constrained Layout Guide相关的知识,希望对你有一定的参考价值。

参考技术A 如何干劲利落地使用constrained_layout参数来画图
constrained_layout参数会自动地调整subplots和修饰的位置

constrained_layout和tight_latout比较相似,不过是利用一个约束器?来完成。

在任意axex被添加到fig中,constrained_layout需要被激活,有俩种方式能够完成这个目的:

plt.subplots(constrained_layout=True)

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

在matplotlib中,axes的位置是通过标准化的图像坐标轴定制的所以,有可能发生axes超出图片的边界而被剪切掉的情况:

notebook会自动调整的?

当你有多个子图的时候,你会发现,它们很可能是重叠在一起的

将constrained_layout设置为True可以避免这一尴尬

当你使用colorbar()创建colorbar的时候,需要为其预留一点空间,将constrained_layout为True,matplotlib会自动帮你完成这一项工作。

我们可以利用ax=...来设定colorbar的位置,也就是colorbar所属的axes,这个时候
constrained_layout会给其留一个空,并且其他的图形大小依旧是一致的。

通过shrink参数,我们可以调整colorbar的长度。

Suptitle用以设置整个图片的标题,

t:str,

x: default 0.5

y: default 0.98

constrained_layout 也会贴心地给大标题留出空间。

同样constrained_layout能够合适地处理legends

但是,legend可能会偷取原本应该属于subplots的空间

后面的没看懂啥意思

对于constrained_layout,我们为其设置内边距。Padding设置了边缘与画板的距离,以及plots的最小边距。
通过set_constrained_layout_pads设置:

w_pad

h_pad

subplots之间的空间,可以通过wspace和hspace来设置,传入一个比例,然后随着图片大小的变化,宽度也会按照比例进行变化

如何我们希望colorbar再稍微远离一点,可以调整pad属性

关于constrained_layout,有5个rcParams参数可以调整

use: 是否使用constrained_layout, 默认为False

w_pad, h_pad: 内边距,默认为3./72. inches 3pts

wspace, hspace: subplots之间的空间,默认为0.02

明白了,就是说使用GridSpec的同时也设置constrained_layout=True是有意义的

我们可以通过set_position来手动设置axes的位置

通过使用fig.execute_constrained_layout()函数,使得数据内的坐标能够被合理放置?

通过fig.set_constrained_layout(False)来手动关闭constrained_layout

subplot函数和constrained_layout是不兼容的,因为constrained_layout是通过gridspecs来布局,而subplot会产生一个独立的gridspec?

同样的,subplot2grid函数也是不行的

也是通过gridspec来改善

注意constrained_layout只能管ticklabels, axis labels, titles,和legends,其他的Artist没法管。

以上是关于matplotlib 进阶之Constrained Layout Guide的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 可视化进阶之 PCA 主成分分布图

第92天:Python Matplotlib 进阶操作

第92天:Python Matplotlib 进阶操作

Python进阶(四十)-数据可视化の使用matplotlib进行绘图

matplotlib的进阶使用

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据