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

Matplotlib 플롯에 테이블 추가하는 방법 완벽 정리

데이터를 시각화할 때 그래프와 함께 표(table) 형태로 값을 보여주면 가독성이 크게 향상됩니다. Matplotlib에서는 table() 메서드를 사용해 현재 축(axe) 위에 테이블을 손쉽게 배치할 수 있습니다. 이번 글에서는 Pandas 데이터프레임을 Matplotlib 플롯 위에 테이블로 표시하는 전체 과정을 단계별로 살펴보겠습니다.

구현 단계

  • subplots() 메서드를 사용해 figure 크기가 (7, 7)인 figure와 서브플롯 집합을 생성합니다.

  • timespeed라는 두 개의 열(키)을 가진 데이터프레임을 만듭니다.

  • 배열의 크기(shape)를 계산합니다.

  • table() 메서드를 사용해 현재 축에 테이블을 추가합니다.

  • 텍스트가 셀 너비 안에 들어갈 때까지 글꼴 크기를 자동으로 조절합니다.

  • 테이블의 글꼴 크기를 직접 설정합니다.

  • matplotlib 테이블의 각 셀을 반복(iteration)하면서 배경색(face color), 테두리 색(edge color), 텍스트 색(text color)을 지정합니다.

  • figure를 저장하고 화면에 출력합니다.

예제 코드

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
df = pd.DataFrame(dict(time=list(pd.date_range("2021-01-01 12:00:00",
periods=10)), speed=np.linspace(1, 10, 10)))
size = (np.array(df.shape[::-1]) + np.array([0, 1])) * np.array([3.0, 6.0])
mpl_table = ax.table(cellText=df.values, bbox=[0, 0, 1, 1], colLabels=df.columns)
mpl_table.auto_set_font_size(False)
mpl_table.set_fontsize(12)
for k, cell in mpl_table._cells.items():
    cell.set_edgecolor('black')
    if k[0] == 0 or k[1] < 0:
        cell.set_text_props(weight='bold', color='w')
        cell.set_facecolor('red')
    else:
        cell.set_facecolor(['green', 'yellow'][k[0] % 2])
plt.show()

실행 결과

Matplotlib 플롯에 테이블 추가하는 방법 완벽 정리

위 코드를 실행하면 데이터프레임의 값이 담긴 테이블이 플롯 영역 전체(bbox=[0, 0, 1, 1])에 배치된 것을 확인할 수 있습니다. 첫 번째 행(헤더)은 빨간색 배경흰색 굵은 글씨로 강조되며, 나머지 데이터 행은 초록색과 노란색이 번갈아 가며 적용되어 줄무늬 효과를 나타냅니다. 모든 셀에는 검은색 테두리가 적용되어 표 구조가 명확하게 드러납니다.