matplotlib缩小子图间距

网上查到的缩小子图间距的办法主要是修改 w_pad, h_pad, wspace 和 hspace 的值。代码如下:

import pylab as plt
plt.tight_layout(pad=0.4, w_pad=0.1, h_pad=1.0)
plt.subplots_adjust(left=None, bottom=None, right=None, top=0.9, wspace=0, hspace=0.3) # 内边距?hspace, wspace值越大,图片所占区域越小

但是使用 plt 绘制图片时会碰到即使调整 w_pad, h_pad, wspace 和 hspace 也不能成功修改间距的情况,这可能是因为:figsize 的比例和图片的比例不同。

举个例子。

import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

x = np.arange(0,5,0.1)
y = x**2
# print(x, y)
plt.rcParams["font.sans-serif"]="SimHei"
fig, axs = plt.subplots(4,3) # 注意这里没有给定 figsize 的值,默认值为 [6.4, 4.8]
fig.suptitle("主标题")
image = np.asarray(Image.open("1.jpg"))

for ax in axs.flat:
    ax.imshow(image)
    ax.set_title("图表标题")
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    ax.axis("off")
plt.tight_layout(pad=0.4, w_pad=0.1, h_pad=1.0)
plt.subplots_adjust(left=None, bottom=None, right=None, top=0.9, wspace=0, hspace=0.3) # 内边距?

绘制的图片如下:
在这里插入图片描述
可以看到,即使 wspace 和 w_pad 的值已经设置得很小了,子图的水平间距还是很大。原因就是:figure 的默认尺寸是:[6.4, 4.8] (w, h) 而我们的输入图片尺寸为 750*750,也就是宽高比为 1:1;所以在不拉伸图片的情况下,尺寸较小的 y 方向填充完后,尺寸更大的 x 方向自然会有更大的空隙。

解决办法就是修改 figure 的尺寸 figsize

import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

x = np.arange(0,5,0.1)
y = x**2
# print(x, y)
plt.rcParams["font.sans-serif"]="SimHei"
fig, axs = plt.subplots(4,3, figsize=(4.3,7)) # 修改 figsize = (4.3,7)
fig.suptitle("主标题")
image = np.asarray(Image.open("1.jpg"))

for ax in axs.flat:
    ax.imshow(image)
    ax.set_title("图表标题")
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    ax.axis("off")
plt.tight_layout(pad=0.4, w_pad=0.1, h_pad=1.0)
plt.subplots_adjust(left=None, bottom=None, right=None, top=0.9, wspace=0, hspace=0.3) # 内边距?

绘制图片如下:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值