데이터 분석 과정에서 여러 변수를 동시에 시각화하고 싶을 때, 한 화면에 여러 그래프를 나란히 배치하면 비교가 훨씬 수월해집니다. 이번 포스팅에서는 파이썬의 enumerate() 함수와 plt.subplot()을 함께 사용하여, 하나의 Figure 안에 두 개 이상의 그래프를 간단히 그리는 방법을 알아보겠습니다.
matplotlib의 subplot() 함수를 사용하면, 한 Figure(창) 안에 다수의 서브플롯(작은 그래프)을 배치할 수 있음plt.subplot(1, 2, 1) → 1행 2열 중 첫 번째 위치에 그래프 생성plt.subplot(1, 2, 2) → 1행 2열 중 두 번째 위치에 그래프 생성이를 enumerate()와 함께 사용하면, 반복문을 통해 여러 컬럼을 순회하면서 서브플롯을 자동으로 생성할 수 있습니다.
아래 코드는 ['Age', 'DistanceFromHome'] 두 변수를 순회하면서, 각 변수의 히스토그램(Histogram)을 나란히 그립니다.
python
코드 복사
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터프레임 df가 있다고 가정
# 예: df = pd.read_csv('file.csv')
plt.figure(figsize=(10, 4)) # 그래프 전체 크기 설정
for i, col in enumerate(['Age', 'DistanceFromHome']):
# 1행 2열 중 i+1번째 서브플롯 선택
plt.subplot(1, 2, i + 1)
# 해당 컬럼에 대한 히스토그램 그리기
sns.histplot(df[col])
# 그래프 제목 달기
plt.title(f"Distribution of {col}")
plt.tight_layout() # 서브플롯 간격 조절
plt.show()
plt.figure(figsize=(10, 4))for i, col in enumerate(['Age', 'DistanceFromHome']):enumerate()를 사용해 반복 시 인덱스(i)와 컬럼명(col)을 동시에 얻음i는 0부터 시작하므로, 서브플롯 인덱스를 위해 i + 1을 사용plt.subplot(1, 2, i + 1)i=0일 때는 왼쪽 그래프, i=1일 때는 오른쪽 그래프sns.histplot(df[col])col에 해당하는 컬럼의 분포(Histogram)를 시각화plt.title(f"Distribution of {col}")plt.tight_layout()plt.show()위 코드를 실행하면, 아래와 같은 형태의 그래프 두 개가 한 줄에 나란히 생성됩니다.
Age의 분포DistanceFromHome(출퇴근 거리) 분포이처럼 히스토그램을 통해 각 변수의 분포 특성(치우침, 최고빈도 구간 등)을 알 수 있으며, 각각을 시각적으로 비교할 수 있습니다.
subplot(2, 3, index) 등을 사용해 2행 3열 레이아웃을 만들 수도 있음for 루프 안에서 변수 목록을 늘리면, 자동으로 여러 변수를 시각화 가능sns.boxplot(), sns.scatterplot() 등을 적용해도 동일한 방식으로 서브플롯에 그릴 수 있음start=1 옵션을 통해 i가 1부터 시작하도록 설정 가능for i, col in enumerate(columns, start=1): plt.subplot(1, 2, i)plt.xlim(), plt.ylim(), plt.xlabel(), plt.ylabel() 등을 적절히 조정해 더 명확한 그래프 전달 가능enumerate() + subplot() 조합은 반복문을 통해 여러 변수를 간편히 시각화할 수 있는 강력한 기법입니다. 이를 통해 수많은 컬럼 중 어떤 부분이 특이 분포를 갖는지, 혹은 서로 다른 변수를 시각적으로 빠르게 비교할 수 있습니다.