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

IT/파이썬

cmap을 활용한 산점도 그리기(Label Encoder활용)

sarah0518 2022. 9. 22. 14:51

cmap을 활용한 산점도 그리기를 연습해보려고 합니다.

 

cmap을 활용하게 되면 일일이 색상을 정해주지 않아도, 

다양한 값에대해 colorbar의 값과 매칭해주어 색상을 표현할 수 있습니다.

아래와 같은 그림처럼 표현이 가능한 것입니다.

https://frhyme.github.io/python-lib/matplotlib_extracting_color_from_cmap/

현재 아래와 같은 데이터가 있다고 가정해볼게요.

수학성적(평균) 영어성적(평균) 학급
85.7 93.2 A
82.1 77.8 B
92.1 85.2 C
95.2 88.3 D

 

학급에 해당하는 값이 색깔로 표현되게 만들 예정입니다.

하지만, 아래와 같이 범주형 컬럼인 class를 그대로 넣어주면

1
plt.scatter(x=df['math'], y=df['eng'], c=df['class'], cmap='viridis')
cs
c of shape (50232,) not acceptable as a color sequence for x with size 50232, y with size 50232

 

위와 같은 에러가 확인됩니다.

왜냐하면, 해당 색상에 대응되는 값들은 숫자값이여야 에러가 안나요.

A B C
0 1 2

 

범주형 값을 숫자로 바꿔주는 코드는 아래와 같습니다.

1
2
3
4
5
from sklearn.preprocessing import LabelEncoder
cat_to_num=Labelencoder()
cat_to_num.fit(df['class'])
df['class_num']=cat_to_num.transform(df['class'])
 
cs

 

위와 같이 변경 후, 다시 산점도를 그려주면

1
plt.scatter(x=df['math'], y=df['eng'], c=df['class_num'], cmap='viridis')
cs

 

원하는 산점도 그래프를 아래와 같이 그릴 수 있습니다.