使用matplotlib supxlabel时的巨大余量

68bkxrlz  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(144)

我试图在matplotlib的子图中添加一个公共标签,但是遇到了一些麻烦。
我使用的是python 3.10和matplotlib 3.5.1
有一个最小的工作示例说明了这个问题:

import matplotlib.pyplot as plt
fig, axs = plt.subplots(3, 2, figsize=(8, 12),  sharex=True, sharey=True)
fig.supxlabel('Example of supxlabel')
fig.supylabel('Example of supylabel')
fig.subplots_adjust(wspace=0, hspace=0)
plt.savefig('test.pdf', bbox_inches='tight', pad_inches=0)

此代码生成下图:

请注意'Example of supxlabel'上方和'Example of supylabel'右侧的巨大丑陋的页边距。
我尝试使用选项constrained_layout=True沿着fig.set_constrained_layout_pads,但它没有解决我的问题。
我知道使用supxlabelsupylabel的选项xyvaha可以解决这个问题,但是我有许多图形要生成,无法实际地手动查找和设置这些选项的值。

z18hc3ub

z18hc3ub1#

我目前的解决方法是y = np.sqrt(height) / 100 * 2.2,至少在height从5到25的范围内似乎工作得很好。如果使用subplots_adjust(bottom=),一个恒定的调整因子似乎工作得很好,比如y -= .04

width = 10
height = 20
y = np.sqrt(height) / 100 * 2.2
fig, _ = plt.subplots(23, 1, figsize=(width, height))
fig.supxlabel("supxlabel", y=y)

相关问题