Python/Matplotlib

Matplotlib) Scatter(스캐터) 차트와 HeatMap(히트맵) 그리기

567Rabbit 2024. 4. 16. 18:05

Scatter(스캐터)

 

스캐터 플롯은 데이터의 분포를 시각적으로 파악할 수 있게 해주며, 두 변수 간의 관계를 이해하는 데 도움이 된다

예를 들어, 두 변수 간의 양의 상관 관계가 있을 때, 데이터 포인트들은 대체로 오른쪽 위로 향하는 경향이 있다.

반대로 음의 상관 관계가 있을 때는 대체로 왼쪽 위로 향하는 경향이 있다.

또한 상관관계가 강할경우 데이터들이 모여있고, 상관관계가 약할 경우 데이터들이 퍼져있다

 

 

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

 

 

# 배기량(displ)과 연비(comb)의 관계를 눈으로 확인해보고싶다

 

df

  displ pv2 pv4 city UCity highway UHighway comb
0 3.8 79 0 16.4596 20.2988 22.5568 30.1798 18.7389
1 2.0 94 0 21.8706 26.9770 31.0367 42.4936 25.2227
2 3.6 94 0 17.4935 21.2000 26.5716 35.1000 20.6716
3 3.6 94 0 16.9415 20.5000 25.2190 33.5000 19.8774
4 2.4 0 95 24.7726 31.9796 35.5340 51.8816 28.6813
... ... ... ... ... ... ... ... ...
3924 1.8 0 0 55.2206 78.8197 53.0000 73.6525 54.4329
3925 2.0 0 106 39.0000 55.9000 44.3066 64.0000 41.0000
3926 2.0 0 106 40.0000 56.0000 46.0000 64.0000 42.0000
3927 3.4 99 0 19.2200 24.2000 30.2863 43.4000 23.0021
3928 3.4 99 0 18.0431 22.6000 27.0000 39.3000 21.3945

 

 

 

plt.figure()
plt.scatter(data=df, x = 'displ', y= 'comb')
plt.title('Displ Vs Comb')
plt.xlabel('Displacement')
plt.ylabel('Combined Fuel Eff (mpg)')
plt.show()

스캐터 차트를 통해 왼쪽 위로 향하는 것을 보아, 음의 상관관계가 있다는 것을 알 수가 있다.

 

 

 

 

# 상관관계 분석

 

df[['displ','comb']].corr()

 

displ = displ, comb=comb는 1이 나오는 것은 의미없는 분석이고

-0.758397이 나오는 것을 통해 displ과 comb는 음의 상관관계라는 것을 알 수 있다.

 

 

 

 

# 더 많은 상관관계 데이터를 보고싶다면?

 

df.corr(numeric_only=True)

 

 

 

 

 

# 스캐터 차트에 회귀직선을 추가하고싶다면?

sb.regplot(data=df, x = 'displ', y= 'comb')
plt.title('Displ Vs Comb')
plt.xlabel('Displacement')
plt.ylabel('Combined Fuel Eff (mpg)')
plt.show()

 

scatter 대신 regplot을 사용하면 된다

 

 

 

 

 

# 쌍둥이 곡선을 그리고 싶다면?

sb.pairplot(data= df, vars= ['displ','comb','co2'])
plt.show()

 

scatter 대신 pairplot을 사용하면 된다

 

 

 

 

 

 

 

HeatMap(히트맵)

 

스캐터플롯은, 겹쳐있는 점이 얼마나 밀도있는지를 자세히 알지 못한다.

이러한 데이터의 "밀도"는 HeatMap(히트맵)을 통해 알아볼 수 있다.

 

plt.hist2d(data= df, x='displ', y='comb', cmin=0.5, cmap = 'viridis_r', bins=20)
#cmin은 없는 데이터를 하얀색으로 표현해준다
plt.colorbar()
plt.show()