상세 컨텐츠

본문 제목

데이터 시각화 기초 - 그래프 종류 3

데이터분석/시각화

by 2^7 2024. 7. 29. 20:41

본문

5. 산점도

두 변수 간의 관계를 시각적으로 나타내기 위해 사용되는 그래프

주로 두 변수 간의 상관관계나 패턴을 식별하기 위해 사용

주요 용도

1) 상관관계 분석

    두 변수 간의 관계를 시각적으로 평가할 수 있으며 변수 간의 선형 상관관계나 비선형 관계를 파악할 수 있음

2) 분포 시각화

    데이터의 분포나 밀도를 시각화하여 확인할 수 있으며 특히 데이터가 어떻게 클러스터링 되거나 분포하는지 확인하는데 유용함

 3) 이상치 탐지

   데이터의 일반적인 패턴에서 벗어난 이상치를 식별할 수 있음

 4) 추세선 축가

    데이터에 추세선을 추가하여 상관관계의 방향성과 강도를 파악할 수 있음

7-1. scatter()함수로 표현하기

import matplotlib.pyplot as plt
plt.style.use('ggplot')        #격자문늬 표시
plt.scatter([1,2,3,4], [10,30,20,40])
plt.show()

scatter()함수는 bar()함수와 비슷하게 x축에 해당하는 데이터와 y축에 해당하는 데이터를 각각 넣으면 데이터에 해당하는 그래프가 작성된다. scatter([x축 데이터], [y축데이터])

7-2. 추세선 추가하기 

import numpy as np
import matplotlib.pyplot as plt

# 데이터 생성
np.random.seed(0)
x = np.linspace(0, 10, 100)
y = 2 * x + 1 + np.random.normal(0, 1, 100)  # y = 2x + 1에 노이즈 추가

# 산점도 그리기
plt.scatter(x, y, color='blue', label='Data points')

# 추세선 계산
m, b = np.polyfit(x, y, 1)  # 1은 1차 다항식(직선)을 의미

# 추세선 그리기
plt.plot(x, m*x + b, color='red', label='Trend line')

# 그래프 레이블 및 타이틀
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Scatter Plot with Trend Line')
plt.legend()

# 그래프 표시
plt.show()

np.polyfit(x, y, 1) 함수는 x와 y 데이터에 대해 1차 다항식(직선)의 기울기(m)와 절편(b)을 계산하고 plt.plot 함수를 사용하여 추세선을 그린다.

seaborn 라이브러리는 추세선을 좀 더 쉽게 이용할 수 있다.

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

# 데이터 생성
np.random.seed(0)
x = np.linspace(0, 10, 100)
y = 2 * x + 1 + np.random.normal(0, 1, 100)  # y = 2x + 1에 노이즈 추가
data = pd.DataFrame({'X': x, 'Y': y})

# 산점도와 추세선 그리기
sns.scatterplot(data=data, x='X', y='Y', color='blue', label='Data points')
sns.regplot(data=data, x='X', y='Y', scatter=False, color='red', label='Trend line')

# 그래프 레이블 및 타이틀
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Scatter Plot with Trend Line')
plt.legend()

# 그래프 표시
plt.show()

seaborn의 regplot 함수는 기본적으로 데이터에 대한 회귀선을 추가해준다.

scatter=False 옵션을 사용하면 산점도는 그리지 않고 추세선만 그릴 수 있다.


7-3. 버블 차트

변수 간의 관계를 나타내며 데이터 포인트의 크기로 또 다른 변수의 값을 나타낸다.

주요 용도

1. 다중 변수 시각화

    세 개의 변수 간의 관계를 동시에 시각화할 수 있으며 x축과 y축이 각각 두 변수의 값을 나타내고 버블의 크기가 세 번째 변수를 나타냄

2. 군집 분석

    데이터가 어떻게 군집화되어 있는지 시각적으로 파악할 수 있으며 데이터 밀집도나 군집의 크기 등을 분석하는데 유용

3. 패턴과 추세 식별

    데이터의 분포와 패턴을 직관적으로 이해할 수 있으며 변수 간의 관계를 쉽게 파악할 수 있다.

import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.scatter([1,2,3,4], [10,30,20,40], s = [100,200,250,300])
plt.show()

scatter()함수를 이용해 버블차트를 그릴 수 있다 size를 의미하는 s속성을 이용하여 원하는 크기를 입력한다.

 

import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.scatter([1,2,3,4], [10,30,20,40], s = [30,60,90,120], c = ['red','blue','green','gold'])
plt.show()

추가로 color을 의미하는 c속성을 이용해 색상을 넣을 수도 있다.

import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.scatter([1,2,3,4], [10,30,20,40], s = [30,60,90,120], c = range(4))
plt.colorbar()
plt.show()

colorbar()함수를 이용하면 그래프 옆에 컬러바가 생성되며 c=range()에 표현하고 싶은 색상의 개수를 넣으면 각 데이터에 해당하는 색으로 지정된다.

matplotlib 라이브러리를 이용하면 다양한 컬러맵을 이용할 수 있다. 참고

728x90

관련글 더보기