반응형
Scatter Plot
산점도는 좌표계 위에 점들을 표시하여 변수 간 관계를 나타내는 방법입니다. matplotlib에서는 pyplot.scatter로 사용할 수 있으며, scatter에서 데이터를 구분하기 위한 주요 시각화 요소로는 color(c), marker, size(s)가 있습니다. 실제로 적용할 수 있는 것들을 실습해보면서 연습해보겠습니다. 먼저 데이터 분석 공부할 때 많이 사용하는 붓꽃 데이터를 불러와서 준비하도록 하겠습니다.
import pandas as pd
from sklearn import datasets
iris_raw = datasets.load_iris()
iris = pd.DataFrame(iris_raw['data'], columns=iris_raw['feature_names'])
iris['Species'] = iris_raw['target']
iris['Species'] = iris['Species'].map({0:'setosa', 1:'versicolor', 2:'virginica'})
iris
실습 1. 색(c)과 사이즈(s)
위에서 준비한 데이터를 바탕으로 Sepal Length와 Sepal Width를 x,y 축으로 놓고, 종별로 색을 구분하고 Petal Width에 따라 사이즈를 구분해보겠습니다. 색은 label별, 사이즈는 petal width 값에 따라 변화하고, 겹치는 내용이 있을 수 있기 때문에 alpha 값을 통해 투명도를 조정했습니다.
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(7, 7))
ax = fig.add_subplot(111)
for species in iris['Species'].unique():
iris_sub = iris[iris['Species']==species]
ax.scatter(x = iris_sub['sepal length (cm)'],
y = iris_sub['sepal width (cm)'],
s = iris_sub['petal width (cm)'] * 100, # 크기x100 키우기
alpha = 0.5, # 투명도 조정
label = species)
ax.legend()
plt.show()
실습 2. 여러 scatter plot 한번에 그리기
산점도는 두가지 변수에 대한 상관관계를 시각적으로 보기에 유리한 차트이지만, 여러 변수가 존재하는 경우 하나의 차트에 놓고 살펴보는 것이 좋습니다. 아래 코드는 여러 차트를 한꺼번에 for문을 통해 생성하는 코드입니다.
fig, axes = plt.subplots(4, 4, figsize=(14, 14))
features = iris.columns[:-1] # label만 제외
for i, f1 in enumerate(features):
for j, f2 in enumerate(features):
if i <= j :
axes[i][j].set_visible(False) # 중복 제거
continue
for species in iris['Species'].unique():
iris_sub = iris[iris['Species']==species]
axes[i][j].scatter(x=iris_sub[f2],
y=iris_sub[f1],
label=species,
alpha=0.7)
if i == 3: axes[i][j].set_xlabel(f2)
if j == 0: axes[i][j].set_ylabel(f1)
plt.tight_layout()
plt.show()
참고자료
[1] Wikipedia. "산점도" https://ko.wikipedia.org/wiki/%EC%82%B0%EC%A0%90%EB%8F%84
반응형
'Python > Visualization' 카테고리의 다른 글
Matplotlib으로 시각화 효과를 높이기 위해 다양한 보조선/그리드 그리기 (0) | 2024.08.25 |
---|---|
Matplotlib을 이용한 막대 그래프 만들기 (bar plot) | 누적 막대 그래프, 비율, 묶은 막대 그래프 (0) | 2024.08.24 |
Matplotlib으로 선 그래프(line plot) 그리기 | 보조축, 그래프 여러개 그리는 방법 (0) | 2024.08.23 |
Basemap 위에 국내 발전사업허가 현황 버블차트 그리기 | Matplotlib (0) | 2021.12.20 |
mpl-toolkits.basemap을 활용한 세계 발전소 데이터를 활용한 발전원별, 용량별 현황시각화 | Matplotlib (0) | 2021.11.13 |