Python/Matplotlib

[Matplotlib] plt 선, 바 그래프 위에 숫자, 값 표시하는 방법

jimmy_AI 2021. 11. 12. 19:29
반응형

matplotlib으로 여러 형태의 그래프를 그리다보면 그래프 위에 값을 새기고 싶은 경우가 있을 것입니다.

이번 포스팅에서는 matplotlib에서 선 그래프 혹은 바 그래프 위에

해당 그래프의 값을 표시하는 방법을 말씀드리도록 하겠습니다.

 

plt 바 그래프 값 표시하기

import matplotlib.pyplot as plt

x = ['a', 'b', 'c', 'd']
y = [18.5, 13.3, 12.5, 14.2]
bar = plt.bar(x, y, color = 'pink')
plt.ylim(0, 22)

# 숫자 넣는 부분
for rect in bar:
    height = rect.get_height()
    plt.text(rect.get_x() + rect.get_width()/2.0, height, '%.1f' % height, ha='center', va='bottom', size = 12)

plt.show()

위와 같이 plt.bar 함수를 객체로 선언하고,

이 객체를 for 문으로 순회하면서

그래프의 값에 해당하는 height를 .get_height() 함수로 받아오고

plt.text 함수에서 숫자가 새겨지기를 원하는 높이, 소수점 포맷팅, 숫자의 위치, 글자 크기 등을 지정해주시면 됩니다.

위 그래프 예시는 소수점 첫째자리까지 표시한 예시를 보여드렸습니다.

 

꼭 그래프의 값이 아니더라도 plt.bar 객체를 for 문으로 순회하며 plt.text로 원하는 텍스트도 넣을 수 있습니다.

 

plt 선 그래프 값 표시하기

import matplotlib.pyplot as plt

x = ['a', 'b', 'c', 'd']
y = [18.5, 13.3, 12.5, 14.2]
line_graph = plt.plot(x, y, 'o-', color = 'red')
plt.ylim(0, 22)

# 숫자 넣는 부분, height + 0.25로 숫자 약간 위로 위치하게 조정
for i in range(len(x)):
    height = y[i]
    plt.text(x[i], height + 0.25, '%.1f' %height, ha='center', va='bottom', size = 12)

plt.show()

이번에는 plt.plot 함수를 사용했던 선 그래프에서 그래프 위에 숫자를 새긴 예시입니다. 

 

plt.plot 함수로 그린 선 그래프의 경우는 객체의 method가 다르게 정의되어 있어(get_height 함수를 지원하지 않습니다.)

y값을 직접 가져와 for 문을 순회하면서 텍스트를 넣어주는 것이 좋습니다.

역시 text의 다른 요소들은 바 그래프의 예시와 같이 다양하게 지정해줄 수 있습니다.

 

이 외 글자 색이나 폰트 등 plt.text 함수에서 지원하는 다양한 특징은 모두 적용 가능하답니다!

 

이상으로 matplotlib에서 그래프 위에 그래프 값 혹은 원하는 숫자/문자를 새기는 간단한 방법에대해서 다루어 보았습니다.