子图边距以适合 matplotlib 中的标题和标签
Subplots margins to fit title and labels in matplotlib
我阅读了大量关于类似问题的答案,none 对我有所帮助。
我只想增加子图与顶部、左侧和底部边缘之间的边距,以适应 fig.suptitle
和常见的 xlabel 和 ylabel。
import matplotlib.pyplot as plt
import random
#from matplotlib import rcParams
#rcParams['axes.titlepad'] = 20 # kind of works but shifts all titles, not only suptitle
def dummy(n):
return random.sample(range(1, 100), n)
data = dict()
for i in range(4):
data["area{}".format(i)] = [dummy(10), dummy(10)]
fig, ax = plt.subplots(2, 2, sharex='all', sharey='all', figsize=(10, 10))
fig.suptitle("Common title", fontsize=22)
ax = ax.reshape(-1)
for i, (area, data) in enumerate(data.items()):
ax[i].set_title(area)
ax[i].scatter(data[0], data[1])
fig.text(0.5, 0.01, 'xlabel', ha='center', fontsize=15)
fig.text(0.01, 0.5, 'ylabel', va='center', fontsize=15, rotation=90)
fig.tight_layout() # Does nothing
fig.subplots_adjust(top=0.85) # Does nothing
fig.show()
Matplotlib 版本 3.0.0
Python 3.6.6
Example plot from shared code
有很多方法可以解决这个问题,但我建议为此使用 gridspec_kw
输入到 plt.subplots
。 gridspec_kw
的文档基本上就是 gridspec.GridSpec 的文档。例如:
fig, ax = plt.subplots(2, 2, sharex='all', sharey='all',
gridspec_kw=dict(left=0.1, right=0.9,
bottom=0.1, top=0.9),
figsize=(10, 10))
left
、right
、... gridspec_kw
的输入指定整个子图组的范围。
这是否能满足您的需求?
我阅读了大量关于类似问题的答案,none 对我有所帮助。
我只想增加子图与顶部、左侧和底部边缘之间的边距,以适应 fig.suptitle
和常见的 xlabel 和 ylabel。
import matplotlib.pyplot as plt
import random
#from matplotlib import rcParams
#rcParams['axes.titlepad'] = 20 # kind of works but shifts all titles, not only suptitle
def dummy(n):
return random.sample(range(1, 100), n)
data = dict()
for i in range(4):
data["area{}".format(i)] = [dummy(10), dummy(10)]
fig, ax = plt.subplots(2, 2, sharex='all', sharey='all', figsize=(10, 10))
fig.suptitle("Common title", fontsize=22)
ax = ax.reshape(-1)
for i, (area, data) in enumerate(data.items()):
ax[i].set_title(area)
ax[i].scatter(data[0], data[1])
fig.text(0.5, 0.01, 'xlabel', ha='center', fontsize=15)
fig.text(0.01, 0.5, 'ylabel', va='center', fontsize=15, rotation=90)
fig.tight_layout() # Does nothing
fig.subplots_adjust(top=0.85) # Does nothing
fig.show()
Matplotlib 版本 3.0.0
Python 3.6.6
Example plot from shared code
有很多方法可以解决这个问题,但我建议为此使用 gridspec_kw
输入到 plt.subplots
。 gridspec_kw
的文档基本上就是 gridspec.GridSpec 的文档。例如:
fig, ax = plt.subplots(2, 2, sharex='all', sharey='all',
gridspec_kw=dict(left=0.1, right=0.9,
bottom=0.1, top=0.9),
figsize=(10, 10))
left
、right
、... gridspec_kw
的输入指定整个子图组的范围。
这是否能满足您的需求?