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

Matplotlib 막대 차트 값을 백분율(%)로 표시하는 방법

Matplotlib에서 막대 차트(bar chart)의 각 값을 백분율(%)로 표시하고 싶다면, annotate() 메서드를 활용하면 간단하게 구현할 수 있습니다. 이 글에서는 단계별로 그 과정을 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.

  • 빈도수(frequencies) 리스트를 준비합니다.

  • plt.figure()로 새 그림을 생성하거나 기존 그림을 활성화합니다.

  • bar() 메서드를 사용해 막대 그래프를 그립니다.

  • 막대 객체들을 순회하며 각 막대(patch)의 높이를 구한 뒤, annotate() 메서드로 해당 위치에 백분율 값을 표시합니다.

  • show() 메서드를 호출하여 그림을 화면에 출력합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

frequencies = [7, 8, 5, 3, 6]

plt.figure()

p1 = plt.bar(np.arange(len(frequencies)), frequencies)

for rect1 in p1:
    height = rect1.get_height()
    plt.annotate("{}%".format(height),
                 (rect1.get_x() + rect1.get_width()/2, height+.05),
                 ha="center", va="bottom", fontsize=15)

plt.show()

실행 결과

위 코드를 실행하면 다음과 같이 각 막대 위에 백분율 레이블이 표시된 그래프가 출력됩니다.

Matplotlib 막대 차트 값을 백분율(%)로 표시하는 방법

코드 설명

핵심은 for rect1 in p1: 반복문입니다. p1에는 bar()가 반환한 BarContainer 객체가 담겨 있으며, 이를 순회하면 개별 막대(Rectangle 패치)에 접근할 수 있습니다. get_height()로 막대의 높이, 즉 데이터 값을 가져오고, get_x()get_width()를 이용해 막대의 가로 중앙 좌표를 계산합니다. 마지막으로 annotate()ha="center"va="bottom" 옵션을 지정하면 막대 꼭대기 바로 위에 백분율 레이블이 중앙 정렬되어 깔끔하게 표시됩니다.