如何调整Matplotlib/Seaborn子图之间的间距以用于多图布局

15
以下图展示了标准的Seaborn/Matplotlib Boxplots,它们在2x2网格布局中呈现:

seaborn/matplotlib sample boxplots

这几乎是我想要的,除了我希望在第一行图形和第二行图形之间加入更多空间。第一行图形的X轴标签与第二行图形的标题之间的距离几乎不存在。我已经按照此线程中解释的参数进行过尝试:

StackOverflow Thread

这是我相关的代码:

    import math
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_pdf import PdfPages
    from PyPDF2 import PdfFileMerger
    import seaborn as sns
    num_cols = 2
    num_rows = int(math.ceil(tot_plots / float(num_cols)))
    fig, axes = plt.subplots(nrows=num_rows, ncols=num_cols, figsize=(16, 16))
    x_var = df_orig['hra']
    for idx, ax in enumerate(axes.flat):
        data_var = current_cols[idx]
        y_var = df_orig[data_var]
        title_str = ''
        sns.boxplot(x=x_var, y=y_var, ax=ax,
                    order=order, palette=color, showfliers=False)
        ax.set_title(data_var + title_str)
        ax.xaxis.label.set_visible(False)
        ax.yaxis.label.set_visible(False)
        ax.xaxis.set_tick_params(labelsize=8)
        ax.yaxis.set_tick_params(labelsize=8)
        plt.setp(ax.xaxis.get_majorticklabels(), rotation=90)
    fig.suptitle("Sampling BoxPlots", x=0.5, y=0.93, fontsize=14, fontweight="bold")
    plt.tight_layout()
    plt.subplots_adjust(top=0.8)
    pdf_pages = PdfPages(file_name)
    pdf_pages.savefig()
    pdf_pages.close()
1个回答

13

你尝试调整一下 hspace = 0.8 吗?根据matplotlib的参考文献,这是用于更改子图之间高度而不是top的参数。

plt.subplots_adjust(hspace = 0.8)

7
谢谢。针对这个帖子的任何读者,我必须注释掉(或删掉)那一行写着“plt.tight_layout()”。 显然,tight_layout和自定义调整是相互排斥的。 - Bharat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接