我试图在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
,但它没有解决我的问题。
我知道使用supxlabel
和supylabel
的选项x
、y
、va
和ha
可以解决这个问题,但是我有许多图形要生成,无法实际地手动查找和设置这些选项的值。
1条答案
按热度按时间z18hc3ub1#
我目前的解决方法是
y = np.sqrt(height) / 100 * 2.2
,至少在height
从5到25的范围内似乎工作得很好。如果使用subplots_adjust(bottom=)
,一个恒定的调整因子似乎工作得很好,比如y -= .04
。