Matplotlib 파이 차트에는 기본적으로 각 조각의 백분율(%)이 표시됩니다. 하지만 autopct 옵션에 람다(lambda) 함수를 활용하면 백분율 대신 실제 데이터 값이나 원하는 사용자 지정 값을 표시할 수 있습니다.
파이 차트에 실제 값 표시하는 단계
- 그림 크기 설정 – figure 크기를 지정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- 데이터 준비 – labels(레이블), fracs(데이터 값), explode(강조 위치) 리스트를 만들고, 값들의 합계를 구해 실제 값 계산에 활용합니다.
- 파이 차트 생성 – labels, fracs, explode를 인자로 넘기고,
autopct=lambda p: ...형태의 계산식을 지정해 실제 값을 표시합니다. - 차트 출력 –
show()메서드로 완성된 그림을 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
labels = ('Read', 'Eat', 'Sleep', 'Repeat')
fracs = [5, 3, 4, 1]
total = sum(fracs)
explode = (0, 0.05, 0, 0)
plt.pie(fracs, explode=explode, labels=labels,
autopct=lambda p: '{:.0f}%'.format(p * total / 100),
shadow=True, startangle=90)
plt.show()
코드 설명
핵심은 바로 autopct 인자입니다. Matplotlib는 autopct에 전달된 콜백 함수에 각 조각의 백분율(p)을 자동으로 넘겨줍니다. 이 백분율에 전체 합계(total)를 곱한 뒤 100으로 나누면 원래의 실제 데이터 값이 계산됩니다. 위 예제에서는 그 결과를 '{:.0f}%'.format(...)으로 정수 형태로 포맷팅하여 차트 위에 표시합니다.
추가로 살펴볼 옵션은 다음과 같습니다.
explode– 특정 조각을 중심에서 약간 분리해 강조하는 옵션입니다. 위 예제에서는 두 번째 조각('Eat')을 0.05만큼 돌출시켰습니다.startangle=90– 첫 번째 조각이 12시 방향에서 시작하도록 회전 각도를 설정합니다.shadow=True– 그림자 효과를 추가해 입체감을 더합니다.
실행 결과

이처럼 autopct에 람다 함수만 잘 활용하면 별도의 주석 작업 없이도 파이 차트에 실제 값을 손쉽게 표시할 수 있습니다.