데이터 분석 작업을 하다 보면 시각화된 그래프와 실제 데이터 값을 한 화면에서 함께 확인하고 싶을 때가 많습니다. Matplotlib과 Pandas를 활용하면 산점도(scatter plot) 옆에 데이터프레임을 표(table) 형태로 나란히 배치할 수 있습니다.
아래 단계를 따라 구현해 보겠습니다.
구현 단계
- 그림(figure) 크기를 설정하고, 서브플롯 사이 및 주변의 여백(padding)을 자동으로 조정합니다.
- 'Straight'와 'Square' 두 개의 열(key)을 가진 Pandas 데이터프레임을 생성합니다.
figure()메서드를 사용해 새 그림을 생성하거나 기존 그림을 활성화합니다.nrows=1, ncols=2,index=1로 첫 번째 서브플롯을 그림에 추가합니다.scatter()메서드를 사용해 데이터프레임의 데이터를 산점도로 그립니다.- 같은 방식으로
index=2인 두 번째 서브플롯을 추가합니다. - 표를 만들기 위해
font_size와bbox변수를 초기화합니다. axis('off')로 현재 축의 눈금과 테두리를 제거합니다.table()메서드를 사용해 현재 축에 데이터프레임을 표로 추가합니다.show()메서드로 최종 결과를 화면에 출력합니다.
전체 코드 예제
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
df = pd.DataFrame({'Straight': [i for i in range(10)],'Square': [i * i for i in range(10)]})
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax1.scatter(x=df.Straight, y=df.Square)
ax2 = fig.add_subplot(122)
font_size = 14
bbox = [0, 0, 1, 1]
ax2.axis('off')
mpl_table = ax2.table(cellText=df.values, rowLabels=df.index, bbox=bbox, colLabels=df.columns)
plt.show()코드 설명
1. 데이터프레임 생성
0부터 9까지의 숫자(Straight)와 각 숫자의 제곱값(Square)으로 이루어진 간단한 데이터프레임을 만듭니다.
2. 좌측 서브플롯: 산점도
add_subplot(121)은 1행 2열 레이아웃 중 첫 번째 위치를 의미합니다. 여기에 x축은 Straight 값, y축은 Square 값을 사용한 산점도를 그립니다.
3. 우측 서브플롯: 데이터 표
두 번째 서브플롯에는 축을 숨기고 table() 메서드로 데이터프레임 전체를 표 형태로 렌더링합니다. bbox=[0, 0, 1, 1]은 표가 축 영역 전체를 채우도록 지정하는 옵션입니다.
실행 결과
위 코드를 실행하면 왼쪽에는 Straight 대비 Square 값의 산점도가, 오른쪽에는 동일한 데이터가 담긴 표가 나란히 표시됩니다. 이 방식을 활용하면 그래프만 봐서는 파악하기 어려운 정확한 수치를 동시에 확인할 수 있어, 리포트나 노트북 문서 작성 시 특히 유용합니다.