Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib 플롯 옆에 Pandas 데이터프레임을 나란히 표시하는 방법

데이터 분석 작업을 하다 보면 시각화된 그래프와 실제 데이터 값을 한 화면에서 함께 확인하고 싶을 때가 많습니다. Matplotlib과 Pandas를 활용하면 산점도(scatter plot) 옆에 데이터프레임을 표(table) 형태로 나란히 배치할 수 있습니다.

아래 단계를 따라 구현해 보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이 및 주변의 여백(padding)을 자동으로 조정합니다.
  • 'Straight'와 'Square' 두 개의 열(key)을 가진 Pandas 데이터프레임을 생성합니다.
  • figure() 메서드를 사용해 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • nrows=1, ncols=2, index=1로 첫 번째 서브플롯을 그림에 추가합니다.
  • scatter() 메서드를 사용해 데이터프레임의 데이터를 산점도로 그립니다.
  • 같은 방식으로 index=2인 두 번째 서브플롯을 추가합니다.
  • 표를 만들기 위해 font_sizebbox 변수를 초기화합니다.
  • 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 값의 산점도가, 오른쪽에는 동일한 데이터가 담긴 표가 나란히 표시됩니다. 이 방식을 활용하면 그래프만 봐서는 파악하기 어려운 정확한 수치를 동시에 확인할 수 있어, 리포트나 노트북 문서 작성 시 특히 유용합니다.