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

Pandas 데이터프레임의 열 값을 활용해 산점도·버블 차트에 레이블 지정하기

Pandas 데이터프레임의 특정 열 값을 활용하여 버블 차트나 산점도(scatter plot)의 각 데이터 포인트에 레이블을 지정하는 방법을 소개합니다. Matplotlib의 annotate() 함수를 사용하면 각 점 옆에 원하는 텍스트를 손쉽게 표시할 수 있습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
  • 2차원 형태의, 크기가 가변적이며 서로 다른 자료형을 담을 수 있는 표 형태의 데이터로 데이터프레임 df를 생성합니다.
  • df를 사용하여 산점도를 그립니다.
  • annotate() 메서드로 각 데이터 포인트에 텍스트 레이블을 추가합니다.
  • 그래프를 화면에 표시하려면 show() 메서드를 호출합니다.

예제 코드

import pandas as pd
from matplotlib import pyplot as plt

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 데이터프레임 생성
df = pd.DataFrame(
   dict(
      x=[1, 3, 2, 4, 5],
      y=[0, 3, 1, 2, 5],
      points=['Kiran', 'Raju', 'Raja', 'Javed', 'Rishi']
   )
)

# 산점도 그리기
ax = df.plot.scatter(x='x', y='y', alpha=0.5)

# 각 데이터 포인트에 주석(레이블) 추가
for i, txt in enumerate(df.points):
   ax.annotate(txt, (df.x.iat[i]+0.05, df.y.iat[i]))

plt.show()

코드 설명

위 예제에서는 x, y 좌표와 이름(points) 세 개의 열을 가진 데이터프레임을 생성합니다. df.plot.scatter()로 산점도를 그린 후, enumerate(df.points)를 통해 각 행의 이름을 순회하면서 해당 데이터 포인트의 좌표에 약간의 x축 오프셋(+0.05)을 더해 레이블이 점과 겹치지 않도록 배치합니다.

실행 결과

위 코드를 실행하면 산점도 위에 각 데이터 포인트 옆에 'Kiran', 'Raju', 'Raja', 'Javed', 'Rishi'라는 이름이 레이블로 표시된 그래프가 출력됩니다.

Pandas 데이터프레임의 열 값을 활용해 산점도·버블 차트에 레이블 지정하기Pandas 데이터프레임의 열 값을 활용해 산점도·버블 차트에 레이블 지정하기