Matplotlib으로 그린 히스토그램에서 각 막대 위에 해당 구간의 데이터 개수(count)를 표시하고 싶다면, patches를 순회하면서 text() 메서드를 사용해 값을 막대 위에 배치하면 됩니다.
구현 단계
- 그림 크기(figsize)를 설정하고, 서브플롯 주변과 사이의 여백을 자동으로 조정합니다.
- 히스토그램을 그릴 숫자 데이터 리스트를 준비합니다.
- hist() 메서드를 사용해 히스토그램을 생성합니다.
- 반환된 patches를 순회하면서 각 막대의 중심 x좌표와 높이(y값)를 계산한 뒤, 해당 위치에 텍스트를 배치합니다.
- show() 메서드로 최종 그림을 화면에 출력합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
data = [3, 5, 1, 7, 9, 5, 3, 7, 5]
_, _, patches = plt.hist(data, align="mid")
for pp in patches:
x = (pp._x0 + pp._x1) / 2 # 막대의 중심 x 좌표
y = pp._y1 + 0.05 # 막대 위쪽 약간 떨어진 y 좌표
plt.text(x, y, pp._y1) # 개수를 텍스트로 표시
plt.show()코드 설명
각 patch 객체는 내부적으로 막대의 시작 x좌표(_x0), 끝 x좌표(_x1), 그리고 높이(_y1) 정보를 가지고 있습니다. 이 값들을 활용해 다음과 같이 텍스트 위치를 계산합니다.
- x 좌표:
(_x0 + _x1) / 2— 막대의 가로 중앙 지점 - y 좌표:
_y1 + 0.05— 막대 꼭대기에서 살짝 위로 띄운 위치
실행 결과
위 코드를 실행하면 히스토그램의 각 막대 바로 위에 해당 구간에 속한 데이터의 개수가 숫자로 표시된 그래프를 확인할 수 있습니다.
