使用 matplotlib 绘制多张子图时,自动调整子图间距避免图像重叠

多张子图重叠与不重叠的绘制效果如下图所示:

image-20231111190959823

方案一:受约束的布局 constrained_layout
  1. 通过 figure 参数设置:

    plt.figure(constrained_layout=True)
    
  2. 通过 subplots 参数设置:

    plt.subplots(layout="constrained")
    
  3. 通过 rcParams 设置:

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

以上方式选择其中一种即可。

参考资料:Constrained Layout Guide


方案二plt.tight_layout()
matplotlib.pyplot.tight_layout(*, pad=1.08, h_pad=None, w_pad=None, rect=None)

方法说明:调整子图与图形边缘的间距,调整子图之间的间距。

参数说明

  1. pad :调整子图与图形边缘的间距。
  2. w_pad h_pad :调整子图之间的水平、垂直间距。如果只设置了 pad 而没有设置 w_padh_pad ,那么 tight_layout 会使用pad参数的值作为子图之间默认的水平和垂直间距。如果 h_padw_pad 也被设置,则这两个参数的值将覆盖 pad 参数对应的间距设置。
  3. rect :调整子图区域, tight_layout 将会使子图置于 rect 的区域中,换句话说,tight_layout 将只会调整指定矩形内的子图布局,而不是整个图形窗口的布局。因此,使用rect参数可以在调用tight_layout 时排除掉图形中不希望调整的区域,比如图例或者标题等。如下方右图,我们在顶部预留了 25% 的空间用于放置标题,以防止标题与子图重叠:
    image-20231111194523403

补充plt.suptitle('Default tight_layout', fontsize=16) 用于对整幅图像设置标题。

注意:如果使用了 plt.tight_layout() ,受约束的布局 constrained layout 将不生效

示例:

plt.tight_layout()

相关代码

import matplotlib.pyplot as plt

plt.figure()
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212)
plt.plot(range(100))

# 设置rect参数,留出顶部25%的空间
plt.tight_layout(rect=[0, 0, 1, 0.75])
plt.suptitle('Custom tight_layout with rect', fontsize=16)
plt.show()

参考资料matplotlib.pyplot.tight_layout


方案三: plt.subplots_adjust()
matplotlib.pyplot.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)[source]

参数说明

  1. wspace 调整子图之间的水平间距
  2. hspace 调整子图之间的垂直间距

示例

plt.subplots_adjust(wspace=0, hspace=0) # 调整子图间距

参考资料matplotlib.pyplot.subplots_adjust

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值