How to adjust space between Matplotlib/Seaborn subplots for multi-plot layouts
13,665
Have you tried adjusting hspace = 0.8
instead? According to matplotlib's reference that's the argument for changing the height between subplots, and not top
.
plt.subplots_adjust(hspace = 0.8)
Author by
Bharat
Updated on June 05, 2022Comments
-
Bharat almost 2 years
The following figure shows the standard Seaborn/Matplotlib Boxplots in a 2 X 2 grid layout:
It is pretty much what I want except that I would like to put some more space between the first row of the of the plots and the second row. The distance between the X-axis labels of the first row plots and the title of the second row plots is almost non-existent. I have been playing with the parameters as explained in this thread:
Here is my relevant code:
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()
-
Bharat almost 7 yearsThank you. For any reader of this thread, I had to comment out (or remove) the line which says 'plt.tight_layout()'. Apparently, tight_layout and custom adjustments are mutually exclusive.