여러 개의 그래프를 하나의 화면에 배치하는 다중 플롯 레이아웃에서는 서브플롯(subplot) 사이의 간격이 너무 좁거나 넓으면 전체 시각화가 지저분해 보일 수 있습니다. 이 글에서는 Matplotlib와 Seaborn을 사용해 서브플롯 간의 공간을 손쉽게 조정하는 방법을 단계별로 살펴봅니다.
단계별 진행 과정
그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
그림과 서브플롯 집합을 생성합니다.
서브플롯 레이아웃 파라미터를 조정합니다.
모든 서브플롯에 Seaborn 박스 플롯(box plot)을 그립니다.
show() 메서드를 사용해 그림을 화면에 표시합니다.
예제 코드
import seaborn as sns from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig, axes = plt.subplots(2, 2) # 서브플롯 레이아웃 파라미터 조정 fig.subplots_adjust(hspace=0.125, wspace=0.125) # 모든 서브플롯에 Seaborn 박스 플롯 생성 sns.boxplot(ax=axes[0, 0]) sns.boxplot(ax=axes[0, 1]) sns.boxplot(ax=axes[1, 0]) sns.boxplot(ax=axes[1, 1]) # 플롯 표시 plt.show()
핵심 파라미터 설명
subplots_adjust() 함수는 서브플롯 배치를 세밀하게 제어할 수 있는 핵심 도구입니다. 주요 파라미터는 다음과 같습니다.
hspace: 서브플롯 사이의 세로 간격을 평균 축 높이에 대한 비율로 지정합니다.
wspace: 서브플롯 사이의 가로 간격을 평균 축 너비에 대한 비율로 지정합니다.
값이 커질수록 서브플롯 사이의 간격이 넓어지고, 작아지면 간격이 좁아집니다.
실행 결과
위 코드를 실행하면 2×2 배열로 배치된 네 개의 박스 플롯이 적절한 간격을 유지한 채 깔끔하게 출력됩니다.

추가 팁
최신 Matplotlib 버전에서는 fig.tight_layout() 또는 plt.subplots(constrained_layout=True) 옵션을 사용하면 서브플롯 간격을 자동으로 최적화할 수 있습니다. 다만 픽셀 단위의 정교한 수동 제어가 필요하다면 subplots_adjust()를 활용하는 것이 가장 확실한 방법입니다.