如何为多图布局调整 Matplotlib/Seaborn 子图之间的空间
Posted
技术标签:
【中文标题】如何为多图布局调整 Matplotlib/Seaborn 子图之间的空间【英文标题】:How to adjust space between Matplotlib/Seaborn subplots for multi-plot layouts 【发布时间】:2017-10-13 17:08:34 【问题描述】:下图显示了 2 X 2 网格布局中的标准 Seaborn/Matplotlib 箱线图:
这几乎是我想要的,只是我想在地块的第一行和第二行之间留一些空间。第一行图的 X 轴标签与第二行图的标题之间的距离几乎不存在。我一直在玩这个线程中解释的参数:
*** 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】:您是否尝试过调整hspace = 0.8
?根据 matplotlib 的reference,这是改变子图之间高度的论据,而不是top
。
plt.subplots_adjust(hspace = 0.8)
【讨论】:
谢谢。对于该线程的任何读者,我必须注释掉(或删除)显示“plt.tight_layout()”的行。显然,tight_layout 和自定义调整是相互排斥的。以上是关于如何为多图布局调整 Matplotlib/Seaborn 子图之间的空间的主要内容,如果未能解决你的问题,请参考以下文章