【问题标题】:Manipulation on vertical space in matplotlib subplotsmatplotlib 子图中垂直空间的操作
【发布时间】:2016-03-02 17:47:53
【问题描述】:

我想减少子图之间的垂直间距。在网上冲浪我刚刚发现了如何减少水平间距,比如

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()

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

编辑:

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

【问题讨论】:

  • 您的代码确实减少了垂直子图之间的空间。
  • 我的意思是,它不会减少子图中y轴之间的空间,这就是我想要做的。
  • 请再读一遍,不要投反对票,因为问题被误解了!

标签: matplotlib


【解决方案1】:

正如您在问题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()

wspace 使用值 1 给出

使用 0.2 作为 wspace 的值给出

【讨论】:

  • 使用 wspace 而不是 hspace 是多么违反直觉!
  • 我想hspaceheightwspacewidth?但是,是的,有点违反直觉!
  • wspacehspace 强制子图变小。
【解决方案2】:

另一种方法是通过 gridspec_kw 参数传递 dict 和键 wspace / hspace

示例

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)

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 感谢您澄清为什么您认为现有答案不相关,并解释您如何解释问题。在用既定答案回答老问题时,这是一个很好的做法。
    猜你喜欢
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    相关资源
    最近更新 更多