gpt4 book ai didi

python - 如何消除 matplotlib 中子图之间的间隙

转载 作者:IT老高 更新时间:2023-10-28 21:11:15 28 4
gpt4 key购买 nike

下面的代码会在子图之间产生间隙。如何消除子图之间的间隙并使图像成为紧密的网格?

enter image description here

import matplotlib.pyplot as plt

for i in range(16):
i = i + 1
ax1 = plt.subplot(4, 4, i)
plt.axis('on')
ax1.set_xticklabels([])
ax1.set_yticklabels([])
ax1.set_aspect('equal')
plt.subplots_adjust(wspace=None, hspace=None)
plt.show()

最佳答案

问题在于 aspect='equal' 的使用,它可以防止子图拉伸(stretch)到任意纵横比并填满所有空白空间。

通常,这会起作用:

import matplotlib.pyplot as plt

ax = [plt.subplot(2,2,i+1) for i in range(4)]

for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])

plt.subplots_adjust(wspace=0, hspace=0)

结果是这样的:

但是,使用 aspect='equal',如下代码所示:

import matplotlib.pyplot as plt

ax = [plt.subplot(2,2,i+1) for i in range(4)]

for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')

plt.subplots_adjust(wspace=0, hspace=0)

这是我们得到的:

第二种情况的不同之处在于您已强制 x 轴和 y 轴具有相同数量的单位/像素。由于默认情况下轴从 0 变为 1(即,在绘制任何内容之前),使用 aspect='equal' 会强制每个轴为正方形。由于图形不是正方形,pyplot 在水平轴之间增加了额外的间距。

要解决此问题,您可以将图形设置为具有正确的纵横比。我们将在这里使用面向对象的 pyplot 接口(interface),我认为它总体上是优越的:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8,8)) # Notice the equal aspect ratio
ax = [fig.add_subplot(2,2,i+1) for i in range(4)]

for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')

fig.subplots_adjust(wspace=0, hspace=0)

结果如下:

关于python - 如何消除 matplotlib 中子图之间的间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20057260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com