Python/Matplotlib

[Matplotlib] 파이썬 산점도 텍스트 label 추가 방법

jimmy_AI 2022. 8. 24. 19:45
반응형

Python scatter plot 라벨 추가하기 예제

파이썬의 matplotlib(plt) 모듈로 산점도를 그린 뒤,

산점도의 각 점에 텍스트 레이블을 추가하는 방법을 간략하게 정리해 보겠습니다.

 

예시로, 다음과 같은 데이터프레임 df 정보에 대하여 산점도를 그려보겠습니다.

import pandas as pd

a = {'이름' : ['AA', 'BB', 'CC', 'DD', 'EE', 'FF'], 'x' : [0.7, 0.4, 1.2, 0.5, 1.3, 0.8], 'y' : [0.6, 1.0, 1.1, 0.5, 0.3, 0.9]} 
df = pd.DataFrame(a)

df

 

우선, 각 행의 x 및 y 값을 기준으로 산점도를 그려본 결과는 아래와 같습니다.

import matplotlib.pyplot as plt

plt.scatter(df['x'], df['y'], color = 'r', s = 10)

plt.show()

 

반응형

 

기본적인 텍스트 라벨 추가 방법

이제 위에서 그린 scatter plot에 각 점의 이름 정보에 해당하는 text label을 추가해 보겠습니다.

 

과정을 간략하게 요약하면 먼저 df의 한 행씩 iloc 함수로 꺼내온 뒤,

x축, y축 좌표 및 라벨에 해당하는 열 이름을 기준으로 순서대로

plt.text 함수의 input으로 지정해주시면 되는 것으로 설명할 수 있습니다.

plt.scatter(df['x'], df['y'], color = 'r', s = 10)

for i in range(len(df)): # 행 개수만큼 순회
    row = df.iloc[i] # 한 행씩 꺼내기
    name = row['이름'] # 이름이 저장된 열
    x = row['x'] # x좌표가 저장된 열
    y = row['y'] # y좌표가 저장된 열

    plt.text(x, y, name) # x 좌표, y좌표, 이름 순서로 input 지정

plt.show()

 

 

레이블 꾸미기를 포함하는 경우

plt.text 함수로 라벨을 그래프에 넣는 것이기에

해당 메소드의 다양한 기능을 통하여 레이블을 마음대로 꾸밀 수 있습니다.

 

예시로, x 및 y 좌표를 우측 위로 살짝 옮기고, 12포인트 크기 파란색 글씨로 지정하며,

이름이 CC 및 EE인 경우 label을 새기지 않게 설정한 코드 및 결과는 다음과 같습니다.

plt.scatter(df['x'], df['y'], color = 'r', s = 10)

for i in range(len(df)): # 행 개수만큼 순회
    row = df.iloc[i] # 한 행씩 꺼내기
    name = row['이름'] # 이름이 저장된 열
    x = row['x'] # x좌표가 저장된 열
    y = row['y'] # y좌표가 저장된 열

    ### 레이블 꾸미기 예시 ###
    if name not in ['CC', 'EE']: # CC, EE는 제외
        plt.text(x + 0.02, y + 0.02, name, color = 'b', fontsize = 12) # x, y좌표 및 색깔, 글자 크기 수정

plt.show()