let us not love with words or tongue but actions and truth.

IT/파이썬

[그래프]산점도에 label 추가하기

sarah0518 2021. 9. 17. 18:00

지난번에 matplotlib을 활용해서 산점도 그래프 그리는 법을 알아봤습니다.

 

이번에는 산점도에 label을 추가하는 방법을 알아보고자 합니다.

 

label 또는 텍스트를 추가한다는 말은 아래 그림과 같이 id1~3까지의 텍스트가 

그림위에 표현 되는 것입니다.

 

 

그럼 matplotlib을 먼저 불러옵니다.

1
from matplotlib import pyplot as plt
cs

 

지난번에 배웠던 산점도 그리는 코드를 기억하실까요?

2가지 방법으로 배웠는데,

 

첫번째는 case마다 직접 명시를 해주는 방법과

두번째로는 for문을 활용해 산점도를 그리는 방법이었어요.

 

 

오늘은 간단히 첫번째 방법으로 그려볼게요.

(어차피 label을 입력할 때 for문을 써줘야 하기 때문에)

 

 
1
2
3
4
5
6
7
8
9
10
plt.figure(figsize=(10,8))
types_tf=df['result'].unique()
# unique한 값은 TP, FN, TN, FP임
 
plt.scatter(x=df[df['result']=='TP']['colA'], y=df[df['result']=='TP']['colB'], alpha=0.7)
plt.scatter(x=df[df['result']=='FN']['colA'], y=df[df['result']=='FN']['colB'], alpha=0.7)
plt.scatter(x=df[df['result']=='TN']['colA'], y=df[df['result']=='TN']['colB'], alpha=0.7)
plt.scatter(x=df[df['result']=='FP']['colA'], y=df[df['result']=='FP']['colB'], alpha=0.7)
 
plt.legend(labels=types_tf)
s

 

자 그럼 기본적으로 그래프를 그리는 코드를 작성했습니다.

 

여기서 label을 추가하기 위해서는 몇줄의 코드를 위의 코드창에 추가 해 주면 됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
plt.figure(figsize=(10,8))
types_tf=df['result'].unique()
# unique한 값은 TP, FN, TN, FP임
 
plt.scatter(x=df[df['result']=='TP']['colA'], y=df[df['result']=='TP']['colB'], alpha=0.7)
plt.scatter(x=df[df['result']=='FN']['colA'], y=df[df['result']=='FN']['colB'], alpha=0.7)
plt.scatter(x=df[df['result']=='TN']['colA'], y=df[df['result']=='TN']['colB'], alpha=0.7)
plt.scatter(x=df[df['result']=='FP']['colA'], y=df[df['result']=='FP']['colB'], alpha=0.7)
 
#아래와 같은 코드로 label(student_id)을 덮어 씌워줌
for k, t in df[df['result']=='FP'][['math','eng','student_id']].iterrows():
    plt.text(t[0], t[1]+0.01, t[2])
 
plt.legend(labels=types_tf)
 
cs

 

중간에 for문으로 덮어씌울 텍스트 값을 넣어준 것이 보이시나요?

 

간단히 코드를 설명해볼게요.

 

iterrows()라는 함수는 각 행을 하나의 list로 받는 것이라고 생각하면 될거같아요!

 

여기서 k[1]은 첫행이고,

그 안에 t[0]는 'math'컬럼값을

t[1]은 'eng'컬럼값을

t[2]는 'student_id'값을 받는다고 생각하시면 돼요.

 

text(t[0], t[1]+0.01, t[2])

그렇다면 이제 이 텍스트 함수를 생각해볼게요.

 

text(x, y, label) 이라고 생각해주시면 되는데,x는 label이 위치할 x좌표y는 label이 위치할 y좌표

그리고 마지막에는 입력할 label의 값을 넣어주면 되는 것이에요.

 

그렇게 개별 좌표마다 for문을 돌면서 label을 그림 위에 덮어 씌우는 것입니다.

 

 

혹시 지난번 산점도 그림 그리는 것에 대해 상세 설명이 필요하다면

아래 링크 참고하세요!

 

 

https://sarah0518.tistory.com/95

 

[그래프] for문으로 산점도 그리기 plt.scatter 활용

오늘은 간단한 산점도에 대해서 정리해보려고 합니다. 산점도를 그릴 때 점마다 다른 색으로 표현해야할 때가 있죠. 그럴 때 유용한 방법입니다. 우선 2가지 방법으로 소개 드릴 건데요. 첫번째!

sarah0518.tistory.com