반응형

Matplotlib를 사용하여 그린 그래프에 라벨을 추가하는 방법입니다. 

 

출처는 아래 링크입니다.

https://queirozf.com/entries/add-labels-and-text-to-matplotlib-plots-annotation-examples#add-labels-to-points-in-scatter-plots 



2022. 6. 19  최초작성




직선 그래프에 라벨 추가

 

직선 그래프에 파란색 원형 마커를 추가하고 y값을 라벨로 추가합니다. 

 

import matplotlib.pyplot as plt
import numpy as np


# 10개의 x좌표와 y좌표를 생성합니다.
xs = np.arange(0,10,1)
ys = np.random.normal(loc=3, scale=0.4, size=len(xs))

# 'bo-'는  b: 파란색, o: 원형마커, -: solid lines
plt.plot(xs,ys,'bo-')

# xs와 ys로부터 하나씩 가져와서 묶은 후, 각각 x,y에 전달합니다.
for x,y in zip(xs,ys):

    label = "{:.2f}".format(y) # y좌표를 소수점 이하 2자리까지를 문자열로 만듬.

    plt.annotate(label, # 출력할 텍스트, 여기에선 y좌표
                (x,y), # 텍스트를 출력할 좌표
                textcoords="offset points", # 텍스트 위치를 (x,y)로 부터의 오프셋 (offset_x, offset_y)로 지정
                xytext=(0, 20), # (x, y)로 부터의 오프셋 (offset_x, offset_y), 여기에선 y 좌표로 +20 이동합니다.
                ha='center') # 수평방향으로 중앙정렬합니다.

# 화면에 출력합니다.
plt.show()

 




막대 그래프에 라벨 추가

막대 그래프에 y값을 라벨로 추가합니다. 

 

import matplotlib.pyplot as plt
import numpy as np


# 10개의 x좌표와 y좌표를 생성합니다.
xs = np.arange(0,10,1)
ys = np.random.normal(loc=3, scale=0.4, size=10)

# 막대 그래프를 그립니다.
plt.bar(xs,ys)

# xs와 ys로부터 하나씩 가져와서 묶은 후, 각각 x,y에 전달합니다.
for x,y in zip(xs,ys):

    label = "{:.2f}".format(y) # y좌표를 소수점 이하 2자리까지를 문자열로 만듬.

    plt.annotate(label, # 출력할 텍스트, 여기에선 y좌표
                (x,y), # 텍스트를 출력할 좌표
                textcoords="offset points", # 텍스트 위치를 (x,y)로 부터의 오프셋 (offset_x, offset_y)로 지정
                xytext=(0, 5), # (x, y)로 부터의 오프셋 (offset_x, offset_y), 여기에선 y 좌표로 +20 이동합니다.
                ha='center') # 수평방향으로 중앙정렬합니다.

# 화면에 출력합니다.
plt.show()






산점도 그래프에 라벨 추가

산점도 그래프에 (x,y)좌표를 추가합니다. 

 

import matplotlib.pyplot as plt
import numpy as np


# 10개의 x좌표와 y좌표를 생성합니다.
xs = np.random.randint( 0, 10, size=10)
ys = np.random.randint(-5, 5,  size=10)

# 산점도 그래프를 그립니다.
plt.scatter(xs,ys)

# xs와 ys로부터 하나씩 가져와서 묶은 후, 각각 x,y에 전달합니다.
for x,y in zip(xs,ys):

    label = f"({x},{y})" # x, y좌표를 문자열로 만듬.

    plt.annotate(label, # 출력할 텍스트, 여기에선 y좌표
                (x,y), # 텍스트를 출력할 좌표
                textcoords="offset points", # 텍스트 위치를 (x,y)로 부터의 오프셋 (offset_x, offset_y)로 지정
                xytext=(0, 5), # (x, y)로 부터의 오프셋 (offset_x, offset_y), 여기에선 y 좌표로 +20 이동합니다.
                ha='center') # 수평방향으로 중앙정렬합니다.

# 화면에 출력합니다.
plt.show()



 

반응형

해보고 확인한 것을 문서화하여 기록합니다.


부족함이 있지만 도움이 되었으면 합니다.
잘못된 부분이나 개선점을 알려주시면 감사하겠습니다.



포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
문제가 생기면 포스트와 바뀐 환경이 있나 먼저 확인해보세요.

질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">