본문 바로가기

시각화/Matplotlib

Matplotlib - 서브플롯 간의 간격 조절 : subplots_adjust, tight_layout(), constrained_layout

반응형

하나의 그래프가 아니라 여러개의 그래프를 그리다보면

 

x축 label과 제목이 겹치는 현상이 자주 발생한다.

 

그럴 때 해결하는 방법을 알아보자

 

 

문제의 그래프

 

 

첫번째 서브플롯의 x축 label과 아래 서브플롯의 제목이 겹쳐져 있다.

 

 

 

 

해결방법1.

fig.tight_layout()

 

 

 

위 방법은 공백이 줄어들면서 오히려 글자들이 더 겹쳐졌다.

 

다른 방법을 알아보자

 

 

 

 

 

 

해결방법2.

subplots_adjust(left, bottom, right, top, wspace, hspace)

현재 배치되어 있는 subplot들의 위치를 직접 조정한다.

left, bottom, right, top
서브플롯 4면의 위치 조정

hspace, wspace
서브플롯 간의 간격을 위해 각각 figure의 너비와 높이에 대한 비율 조절

 

 

plt.subplots_adjust(left=0.125, bottom=0.1, right=0.9, top=0.9, wspace=0.2, hspace=0.2)

 

 

 

직접 간격을 조절하니 거의 겹치지 않게 되었다.

 

 

 

 

 

plt.subplots_adjust(left=0.125, bottom=0.1,  right=0.9, top=0.9, wspace=0.2, hspace=0.35)

 

hspace만 0.35로 바꿔보자

 

 

 

원하는 대로 글씨가 겹쳐지지 않게 나왔다.

 

 

 

 

 

해결방법3.

plt.subplots(constrained_layout=True)

subplots에서 constrained_layout을 True로 넘겨준다.

서브플롯간의 간격을 가능한 최적의 수치로 자동 조정해준다.

 

 

 

이 또한 글씨가 잘 겹치지 않게 잘 나왔다.

 

 

위 세가지 방법 모두 어떤 그래프를 그리냐에 따라 다르겠지만

 

직접 조정하는 것이 번거롭다면 마지막 방법을 자주 이용해도 될 것 같다.

 

 

반응형