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

Matplotlib 히스토그램 막대 위에 개수(Count) 표시하는 방법

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 — 막대 꼭대기에서 살짝 위로 띄운 위치

실행 결과

위 코드를 실행하면 히스토그램의 각 막대 바로 위에 해당 구간에 속한 데이터의 개수가 숫자로 표시된 그래프를 확인할 수 있습니다.

Matplotlib 히스토그램 막대 위에 개수(Count) 표시하는 방법