Matplotlib 如何向带有子图的图形添加任意大的白色边距?

Matplotlib 如何向带有子图的图形添加任意大的白色边距?,matplotlib,Matplotlib,我试图在带有子图的图形中添加任意大的白边(或填充),因为我希望图形的子图不与这些子图的任何子图或标题重叠。我正在使用Matplotlib 3.1.2 目前,我有以下源代码 import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(2, 1, figsize=(15, 10)) n = 10 x = np.arange(0, n) y = np.random.rand(n) ax[0].plot(x,

我试图在带有子图的图形中添加任意大的白边(或填充),因为我希望图形的
子图
不与这些子图的任何子图或标题重叠。我正在使用Matplotlib 3.1.2

目前,我有以下源代码

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(2, 1, figsize=(15, 10))

n = 10
x = np.arange(0, n)
y = np.random.rand(n)

ax[0].plot(x, y)
ax[0].set_xlabel('x')
ax[0].set_ylabel('y')

y = np.random.rand(n)

ax[1].plot(x, y)
ax[1].set_xlabel('x')
ax[1].set_ylabel('y')

fig.suptitle("I want to have white space around me!!!")
# fig.tight_layout(rect=[0, 0.03, 1, 0.80])
plt.subplots_adjust(top=0.85)

plt.show()
如果我尝试使用
紧凑布局
子地块调整
(如本问题的多个答案中所建议的),它似乎不会对边距产生任何影响。下面是执行上一个示例的结果

有没有办法在图形的左、右、底部和(或)顶部添加任意大的白色边距(带子图)?我想指定图形大小,并任意增加或减少图像周围的空白。如果我决定为每个子地块添加一个标题,我也希望这个解决方案能够起作用。如何做到这一点

fig, axs = plt.subplots(2,1, figsize=(5,5))
fig.patch.set_facecolor('grey')
fig.suptitle("Look at all that grey space around me!!!")
fig.subplots_adjust(top=0.6, bottom=0.4, left=0.4, right=0.6)

这正是OP已经尝试过的,但在他们的案例中失败了。我猜你是在jupyter笔记本上工作吧?如果是这样,您将使用
fig.savefig(“output.png”)
保存的图形是正确的,对吗?!您可以通过
%config InlineBackend.print\u figure\u kwargs={'bbox\u inches':None}
在代码前的空单元格中获得所需的图形。或者您可以使用
%matplotlib笔记本
后端。@ImportanceOfBeingErnest不,我没有使用Jupyter笔记本。我在虚拟环境中与PyCharm合作。好的,你仍然可以在PyCharm之外(但仍然在虚拟环境中)尝试吗?
fig.savefig(“output.png”)
会给出正确的输出吗?是否使用常规后端(如
导入matplotlib);matplotlib.use(“TkAgg”)
使其工作?@ImportanceOfBeingErnest在PyCharm之外,上面的示例在超级标题周围添加了空格,即使没有使用
导入matplotlib;matplotlib.use(“TkAgg”)
。但是,我有另一个(完全不同的)示例,其中,即使我在PyCharm之外(即从终端)执行它,它也不会添加空白。使用TkAgg后端是为了查看它是否可以更改PyCharm中的任何内容。如果你想分享另一个完全不同的例子,我可以理解为什么它在PyCharm之外不起作用。(PyCharm是封闭源代码的,因此通常很难知道为什么有些东西不起作用)