首页技术文章正文

大数据Python培训:紧密布局的应用

更新时间:2022-04-12 来源:黑马程序员 浏览量:

  matplotlib中紧密布局与约束布局相似,它采用紧凑的形式将子图排列到画布中,仅适用于刻度标签、坐标轴标签和标题位置的调整。

  pyplot中提供了两种实现紧密布局的方式:第一种方式是调用tight_layout()函数;第二种方式是修改figure.autolayoutrcParam配置项。关于紧密布局的两种实现方式的介绍如下。

  (1)调用tight_layout()函数

  matplotlib在1.1版本中引入了tight_layout()函数,通过该函数调整子图的内边距及子图的间隙,使子图能适应画布的绘图区域。tight_layout()函数的语法格式如下:

tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None)

  该函数的参数含义如下。

  .pad:表示画布边缘与子图边缘之间的空白区域的大小,默认为1.08。

  .h_pad, w_pad:表示相邻子图之间的空白区域的大小。

  .rect:表示调整所有子图位置的矩形区域的四元组(left,bottom,right,top),默认为(0,0,1,1)。

  需要注意的是,当pad参数设为0时,空白区域的文本会出现被裁剪的现象,之所以出现文本部分缺失的情况,可能是因为算法错误或受到算法的限制。因此,官方建议pad参数的取值应至少大于0.3。

  (2)修改figure.autolayoutrcparam配置项

  pyplot可以通过rcParams字典或rc()函数修改figure.autolayoutParam配置项的值为True,使子图元素适应画布,示例代码如下:

plt.rcParams['figure.autolayoutrcParam'] = True

  例如,使用subplots()函数绘制2行2列的带有坐标轴标签的子图,并通过tight_layout()函数解决子图之间的标签重叠问题,代码如下。

import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2)
ax_one = axs[0, 0]
ax_one.set_title('Title')
ax_two = axs[0, 1]
ax_two.set_title('Title')
ax_thr = axs[1, 0]
ax_thr.set_title('Title')
# 调整子图之间的距离
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=2)
plt.show()

  紧密布局调整前与调整后的效果如图5-16所示。

1649730941584_布局调整后的子图.jpg

  图5-16 紧密布局调整前与调整后的效果

分享到:
在线咨询 我要报名
和我们在线交谈!