Matplotlib中嵌套subfigure为何无法在GridSpec中分离各自的suptitle?
Matplotlib中嵌套subfigure为何无法在GridSpec中分离各自的suptitle?
我原本以为下面这段代码能生成两行互不重叠的suptitle:
import matplotlib.pyplot as plt fig = plt.figure(figsize=(8, 6)) fig_gridspec = fig.add_gridspec(1, 1) top_subfig = fig.add_subfigure(fig_gridspec[(0, 0)]) top_subfig.suptitle("I am the top subfig") top_subfig_gridspec = top_subfig.add_gridspec(1, 1, top=.7) nested_subfig = top_subfig.add_subfigure(top_subfig_gridspec[(0, 0)]) nested_subfig.suptitle("I am the nested subfig") plt.show()
但实际运行后,两个标题却重叠在了一起👇

有没有大佬能解释下这是为啥?另外,有没有办法用嵌套子图实现标题的分离效果?
补充说明
编辑1:这里要明确下,我指的是不修改GridSpec的网格尺寸的前提下实现分离。
我知道下面这种方法是可行的,说不定最后也只能这么做:
import matplotlib.pyplot as plt fig = plt.figure(figsize=(8, 6)) fig_gridspec = fig.add_gridspec(1, 1) top_subfig = fig.add_subfigure(fig_gridspec[(0, 0)]) top_subfig.suptitle("I am the top subfig") top_subfig_gridspec = top_subfig.add_gridspec(2, 1, height_ratios=[.1, 1]) nested_subfig = top_subfig.add_subfigure(top_subfig_gridspec[(1, 0)]) nested_subfig.suptitle("I am the nested subfig") plt.show()
但我就是搞不懂第一段代码为啥不行,而且为啥嵌套子图的位置好像没法在父级子图里调整?
编辑2:另外还有个相关的问题,我在更复杂的实际场景里发现,包含嵌套子图的GridSpec中设置hspace好像完全不起作用。我现在甚至开始怀疑:当GridSpec关联的是子图,或者里面放置的是子图时,GridSpec的参数根本就不生效?目前还没摸清楚这个问题的边界。
编辑3:最后补充一句,我一开始没说清楚,在我的实际业务场景里使用constrained_layout会引发一堆问题——虽然它能解决部分排版问题,但我没法用它来处理当前的情况。我现在就想搞明白:为啥子图就是不遵守它所在的GridSpec规则?如果答案是“这是Matplotlib的bug,你这种场景别用嵌套子图”,或者“这是Matplotlib的设计逻辑,你这种需求不该用嵌套子图”,我都能接受。
备注:内容来源于stack exchange,提问作者Katie
相关产品推荐
相关产品推荐

