안녕하세요. 이번 포스팅에서는 Python을 활용한 Scatter plot의 시각화에 대해서 다뤄 보도록 하겠습니다.
(1) 사용할 패키지 불러오기
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
Python에서 시각화 패키지로 가장 많이 사용하는 것은 Matplotlib 입니다.
(2) 사인 그래프 그리기
x = np.linspace(0, 10, 30)
y = np.sin(x)
plt.plot(x, y, 'o', color='black');
numpy의 sin 함수를 통해서 x와 y를 생성하였습니다.
plt.plot 함수를 활용하고, 'o' 조건을 통하여 o 모양의 점을 생성할 수 있습니다. color 인자를 통해 점의 색상을 지정할 수 있습니다.
저희가 생성했던 X와 y 좌표에 대해서 점이 찍힌 Scatter plot이 생성 되었습니다.
plt.plot(x, y, '-ok')
만약 위 처럼 'o' 대신에 '-ok' 를 넣어준다면 점과 함께 라인을 그릴 수 있습니다.
지금 보시면 그래프의 y축이 -1과 1 사이로 지정이 되어 있어서 살짝 잘린 그림으로 보입니다.
이는 ylim 을 추가로 지정해줌으로써 해결할 수 있습니다.
plt.plot(x, y, '-p', color='gray',
markersize=15, linewidth=4,
markerfacecolor='white',
markeredgecolor='gray',
markeredgewidth=2)
plt.ylim(-1.2, 1.2);
추가로 marker의 크기, 선의 굵기, 색깔, 모양 등을 모두 바꿔주실 수 있습니다.
보통 어떤 marker가 있는지 알아볼까요??
rng = np.random.RandomState(0)
for marker in ['o', '.', ',', 'x', '+', 'v', '^', '<', '>', 's', 'd']:
plt.plot(rng.rand(5), rng.rand(5), marker,
label="marker='{0}'".format(marker))
plt.legend(numpoints=1)
plt.xlim(0, 1.8);
marker는 위와 같이 여러가지로 분류될 수 있습니다.
위 그림을 참조해서, 원하시는 Marker에 따른 그래프를 그려보세요!
plt.plot 함수 대신에 plt.scatter 함수를 사용하면 좀 더 다양한 변화를 주면서 Scatter plot을 그릴 수 있습니다.
plt.scatter(x, y, marker='o');
한 번 세부적인 그래프 설정을 주어, Iris 데이터를 Scatter plot 으로 표현해보도록 하겠습니다.
from sklearn.datasets import load_iris
iris = load_iris()
features = iris.data.T
plt.scatter(features[0], features[1], alpha=0.2,
s=100*features[3], c=iris.target, cmap='viridis')
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1]);
코드를 한 줄 한 줄 살펴보겠습니다.
load_iris 함수를 통해 iris 라는 이름으로 데이터를 불러왔습니다.
그리고 scatter plot의 인자로, x축에 0번째 열을, y축에 1번째 열을 대입하였습니다.
alpha의 경우에는 점의 투명도입니다.
1에 가까울수록 거의 안보이게 됩니다.
s는 점의 크기인데, 3번째 열을 통해서 scale을 주어습니다.
c는 점의 색상으로 iris 데이터의 target 변수로 변화를 줄 수 있습니다.
cmap은 어떤 색상으로 변화를 줄 것인가에 대한 변수입니다.
xlabel 과 ylabel 함수를 통해 x축과 y축 이름을 설정하였습니다.
'데이터 다루기 > 데이터 시각화' 카테고리의 다른 글
[Python 시각화] Bar plot (1) (0) | 2022.12.19 |
---|---|
[Python 시각화] Scatter plot (2) (0) | 2022.12.07 |
[R을 활용한 시각화] 9. ggplot2 (ECDF: 경험적 누적 밀도 함수) (0) | 2020.12.11 |
[R을 활용한 시각화] 8. ggplot2 (Violin plot) (0) | 2020.12.10 |
[R을 활용한 시각화] 7. ggplot2 (Histogram) (0) | 2020.12.10 |