对matplotlib子图中垂直空间的操纵

use*_*579 8 matplotlib

我想减少子图之间的垂直间距.在网上冲浪我刚刚发现了如何减少水平间距,就像这样

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=4, ncols=4)
fig.tight_layout() # Or equivalently,  "plt.tight_layout()"
fig.subplots_adjust(hspace=0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)

hspace是操纵这种行为的东西,但显然没有vspace.

编辑:

这不会减少y轴之间的空间,这就是我想要操纵的空间.

Dav*_*idG 14

正如您在问题中所说的那样hspace减少了子图之间的垂直间距.子图之间水平间距的等价物是wspace.以下是一个例子:

x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)


fig, ((ax1,ax2),(ax3,ax4)) = plt.subplots(nrows=2, ncols=2)
fig.tight_layout()
ax1.plot(x, y)
ax2.scatter(x, y)
ax3.scatter(x, y)
ax4.scatter(x, y)

fig.subplots_adjust(wspace=0.2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

使用1的值wspace给出 在此输入图像描述

使用0.2作为wspace给出的值

在此输入图像描述

  • 用 wspace 代替 hspace 是多么违反直觉! (2认同)
  • 我想`hspace` 是_height_ 而`wspace` 是_width_?但是,是的,有点违反直觉! (2认同)

Chr*_*s A 9

另一种方法是使用键/传递gridspec_kw参数 a :dictwspacehspace

例子

fig, axes = plt.subplots(nrows=2, ncols=2, gridspec_kw={'hspace': 0.2, 'wspace': 0.9})
plt.tight_layout()

for ax, color in zip(axes.ravel(), list('rgbk')):
    ax.scatter(np.arange(100), np.random.randn(100), color=color)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 5

如果我正确理解你的问题,你想减少垂直间距,这不是我在上面所有答案中看到的。

hspace例如,如果我是正确的,您应该将 0.5 减少到 0.2。那是因为hspace不代表水平间距,它代表高度间距,这正是您所需要的。