안녕하세요~ 꽁냥이에요. 차트에 테이블을 추가하면 더 많은 정보를 한눈에 볼 수 있어 좋을 것입니다. Matplotlib에서는 차트에 테이블을 넣을 수 있도록 table이라는 함수를 제공하고 있는데요. 이번 포스팅에서는 table 함수의 사용법을 알아보겠습니다.
차트에 테이블 추가하기 (feat. table)
- table 함수 사용법 -
table 함수의 사용법은 다음과 같습니다.
table(cellText='셀 값', rowLabels='row 라벨', colLabels='칼럼 라벨')
실제 코드를 통하여 사용법을 알아보겠습니다. 아래 코드는 스택 바 차트에서 각 스택 별로 누적되는 값을 테이블로 표현한 것입니다.
import numpy as np
import matplotlib.pyplot as plt
## 데이터
data = [[ 66386, 174296, 75131, 577908, 32015],
[ 58230, 381139, 78045, 99308, 160454],
[ 89135, 80552, 152558, 497981, 603535],
[ 78415, 81858, 150656, 193263, 69638],
[139361, 331509, 343164, 781380, 52269]]
columns = ('혹한', '폭풍', '홍수', '지진', '해일') ## 칼럼 명
rows = ['%d year' % x for x in (100, 50, 20, 10, 5)] ## row 라벨
values = np.arange(0, 2500, 500)
value_increment = 1000
# 스택 바 차트 컬러
colors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows)))
n_rows = len(data)
index = np.arange(len(columns)) + 0.3 ## 막대 가로 중심 x좌표
bar_width = 0.4 ## 막대폭
## 스택 바 차트 각 막대의 하단 y 좌표
y_offset = np.zeros(len(columns))
## 스택 바 차트 & 테이블 셀별 텍스트 생성
fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')
cell_text = []
for row in range(n_rows):
plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])
y_offset = y_offset + data[row]
cell_text.append(['%1.1f' % (x / 1000) for x in y_offset])
## 색상과 텍스트 반전(최신 데이터를 위로 올린다)
colors = colors[::-1]
cell_text.reverse()
# 테이블
the_table = plt.table(cellText=cell_text, ## 셀별 텍스트
rowLabels=rows, ## row 라벨
rowColours=colors, ## row 라벨 컬러
colLabels=columns, ## 칼럼 라벨
cellLoc='center', ## 셀 값 가운데 정렬
colLoc='center', ## 칼럼 라벨 가운데 정렬
rowLoc='right', ## row 라벨 오른쪽 정렬
loc='bottom', ## 테이블 위치
)
plt.ylabel("Loss in ${0}'s".format(value_increment))
plt.yticks(values * value_increment, ['%d' % val for val in values])
plt.xticks([])
plt.title('Loss by Disaster')
plt.show()
line 41~49
table을 생성합니다. cellText 인자에 셀 값을, rowLabels에는 행 라벨, colLabels에는 칼럼 라벨가 들어있는 배열을 넘겨줍니다. 이때 셀, 행 라벨, 칼럼 라벨 정렬도 지정했습니다. 그리고 좌표축(axes) 기준으로 아래에 테이블을 표시하도록 했습니다.
코드를 실행하면 위와 같이 스택 바 차트와 각 스택을 누적한 테이블이 잘 나오는 것을 알 수 있습니다. 확실히 스택 바 차트 하나로는 허전하지만 테이블이 있어서 좀 더 많은 정보를 제공하고 이를 통해 차트를 좀 더 잘 이해할 수 있네요.
차트에 테이블을 추가하는 것은 꽁냥이가 잘 사용하진 않는데요. 그래도 알아두면 언젠가 도움이 되지 않을까 합니다. 부디 이번 포스팅이 어떤 분께는 도움이 되시길 바라며 이상 포스팅 마치겠습니다.
- 참고자료 -
Matplotlib - Table Demo
댓글