본문 바로가기

데이터 다루기/데이터 시각화

[Python 시각화] Scatter plot (2)

728x90
반응형

(1) Scatter plot with density

밀도에 변환를 주는 Scatter plot을 그려보겠습니다.

 

import numpy as np
a = np.random.normal(size=1000)
b = a*3 + np.random.normal(size=1000)

numpy의 random.normal 함수를 사용하여, 1000개의 Point 데이터를 생성하였습니다.

 

import matplotlib.pyplot as plt

plt.hist2d(a, b, (50, 50), cmap=plt.cm.jet)
plt.colorbar()

Matplotlib 의 hist2d 함수를 사용하면, Density가 색상으로 표현되는 Scatter plot을 그릴 수 있습니다.

(2) Scatter plot with 추세선

다음으로 Scatter plot에 추세선을 추가로 그려보도록 하겠습니다.

import numpy as np 

x = np.array([1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9])
y = np.array([13, 14, 17, 12, 23, 24, 25, 25, 24, 28, 32, 33])

예제 데이터는 위와 같이 구성하였습니다.

import matplotlib.pyplot as plt

#create basic scatterplot
plt.plot(x, y, 'o')

#obtain m (slope) and b(intercept) of linear regression line
m, b = np.polyfit(x, y, 1)

#add linear regression line to scatterplot 
plt.plot(x, m*x+b)

우선 x와 y에 대한 Point를 Plotting 합니다.

그리고 numpy의 polyfit 함수를 통해서 기울기와 y 절편 값을 구할 수 있습니다.

이 때, 1이 아닌 2 이상의 숫자를 인자로 사용하면, 다차항식을 적합할 수도 있습니다.

그리고 x와 mx+b로 그래프를 그리면 아래와 같은 그림을 얻을 수 있습니다.

사실 seaborm 패키지의 regplot을 사용하면 코드 한 줄로 쉽게 그릴 수도 있습니다.

import seaborn as sns

#create scatterplot with regression line
sns.regplot(x, y, ci=None)

이 때 ci는 confidence interval을 의미합니다.

 

 

반응형