와플 차트(Waffle Chart)는 목표 달성 진행 상황을 한눈에 보여주는 데 널리 활용되는 시각화 기법입니다. 이름 그대로 와플처럼 정사각형 격자가 빽빽하게 채워진 형태로, 각 칸이 특정 값의 비율을 나타내기 때문에 데이터 구성 비중을 직관적으로 파악할 수 있습니다.
Matplotlib에서는 새로운 피겨를 생성하거나 기존 피겨를 활성화할 때 FigureClass=Waffle 옵션을 사용하면 손쉽게 와플 차트를 그릴 수 있습니다. 이 기능은 pywaffle 라이브러리가 제공하므로, 먼저 설치가 필요합니다(pip install pywaffle).
구현 단계
딕셔너리를 이용해 Pandas 데이터프레임을 생성합니다.
FigureClass=Waffle, rows=5(행 개수), values=df.price(값), labels=df.books(레이블) 옵션과 함께
plt.figure()를 호출해 새 피겨를 만듭니다.plt.show()메서드를 사용해 완성된 차트를 화면에 표시합니다.
예제 코드
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
data = {'books': ['physics', 'chemistry', 'math', 'english', 'hindi'],
'price': [80, 87, 89, 56, 39]
}
df = pd.DataFrame(data)
fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=df.price,
labels=list(df.books)
)
plt.show()실행 결과
위 코드를 실행하면 과목별 가격 정보가 행 5개짜리 와플 격자 형태로 시각화됩니다. 각 과목(물리, 화학, 수학, 영어, 힌디어)은 서로 다른 색상의 사각형 블록으로 표현되며, 블록의 개수가 해당 과목 가격에 비례합니다. 범례(legend)를 함께 확인하면 어떤 색상이 어느 과목에 해당하는지 쉽게 알 수 있습니다.
참고 팁
rows대신columns매개변수를 지정하면 열 개수를 기준으로 차트를 배치할 수 있습니다.legend,colors,title등의 추가 옵션을 활용하면 차트의 가독성과 디자인을 더욱 향상시킬 수 있습니다.값의 합이 클 경우
rounding_rule또는 값 스케일링을 조정해 전체 블록 수를 적절히 제한하는 것이 좋습니다.