Matplotlib에서 서브플롯(subplot) 사이의 불필요한 공간을 제거하려면 GridSpec(3, 3) 클래스를 활용하여 축(axes)을 서브플롯 배치로 추가하는 방법을 사용할 수 있습니다. GridSpec은 격자 형태로 서브플롯을 유연하게 배치하고, 서브플롯 간의 간격을 세밀하게 조절할 수 있게 해주는 강력한 도구입니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- 그림 내에 서브플롯을 배치하기 위한 그리드 레이아웃을 추가합니다.
- update() 메서드를 사용하여 그리드의 서브플롯 파라미터(wspace, hspace)를 업데이트합니다.
- 그리드 스펙의 차원 크기만큼 반복문을 실행합니다.
- 현재 그림에 서브플롯을 추가합니다.
- 각 서브플롯의 가로세로 비율(aspect ratio)을 설정합니다.
- 그림을 화면에 표시하려면 show() 메서드를 사용합니다.
예제 코드
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
gs1 = gridspec.GridSpec(3, 3)
gs1.update(wspace=0.5, hspace=0.1)
for i in range(9):
ax1 = plt.subplot(gs1[i])
ax1.set_aspect('equal')
plt.show()코드 설명
위 코드에서 wspace는 서브플롯 사이의 가로 간격 너비를, hspace는 세로 간격 높이를 각각 제어합니다. 이 값을 조절하면 서브플롯 사이의 공간을 넓히거나 좁힐 수 있습니다. 또한 set_aspect('equal')을 사용하여 각 축의 단위 길이가 동일하도록 설정함으로써 그래프의 비율이 왜곡되지 않도록 합니다.
출력 결과
위 코드를 실행하면 3×3 격자 형태로 배치된 9개의 서브플롯이 표시되며, wspace와 hspace 값에 따라 서브플롯 간의 간격이 조정된 결과를 확인할 수 있습니다.