본문 바로가기
python

scatter plot 그리기

by 볼록티 2020. 5. 14.
728x90
반응형

가볍게 산점도를 그려보자.

 

In [9]:
import matplotlib.pyplot as plt
import pandas as pd
import re
 

UCI 사이트에서 iris 데이터를 다운받았음.

https://archive.ics.uci.edu/ml/datasets.php

In [6]:
iris=pd.read_csv('iris.data', header=None)
iris.columns = ["sepal length","sepal width",'petal length','petal width','class']
In [17]:
iris['class'] = iris['class'].map(lambda i: re.sub('Iris-','',i))
In [18]:
iris
Out[18]:
  sepal length sepal width petal length petal width class
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
... ... ... ... ... ...
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica

150 rows × 5 columns

In [21]:
# class별로 데이터를 분할하기.
setosa = iris[iris['class'] =='setosa']
versicolor = iris[iris['class'] =='versicolor']
virginica = iris[iris['class'] =='virginica']


# class 별로 마킹을 다르게 하기.
setosa_sc = plt.scatter(setosa['sepal length'],setosa['sepal width'], marker='o', color='b')
versicolor_sc = plt.scatter(versicolor['sepal length'],versicolor['sepal width'], marker='x', color='g')
virginica_sc = plt.scatter(virginica['sepal length'],virginica['sepal width'], marker='v', color='k')


# legend 좌측 상단에 삽입
plt.legend((setosa_sc,versicolor_sc,virginica_sc), ('setosa','versicolor','virginica'),loc='upper left')

# 제목 달기.
plt.title("Iris dataset", fontsize= 20)

plt.show()
 
In [22]:
# 그래프의 스타일 종류

plt.style.available
Out[22]:
['bmh',
 'classic',
 'dark_background',
 'fast',
 'fivethirtyeight',
 'ggplot',
 'grayscale',
 'seaborn-bright',
 'seaborn-colorblind',
 'seaborn-dark-palette',
 'seaborn-dark',
 'seaborn-darkgrid',
 'seaborn-deep',
 'seaborn-muted',
 'seaborn-notebook',
 'seaborn-paper',
 'seaborn-pastel',
 'seaborn-poster',
 'seaborn-talk',
 'seaborn-ticks',
 'seaborn-white',
 'seaborn-whitegrid',
 'seaborn',
 'Solarize_Light2',
 'tableau-colorblind10',
 '_classic_test']
In [23]:
# 스타일 적용하기.
plt.style.use('ggplot')
In [24]:
# 위와 동일한 코드 !
setosa = iris[iris['class'] =='setosa']
versicolor = iris[iris['class'] =='versicolor']
virginica = iris[iris['class'] =='virginica']

setosa_sc = plt.scatter(setosa['sepal length'],setosa['sepal width'], marker='o', color='b')
versicolor_sc = plt.scatter(versicolor['sepal length'],versicolor['sepal width'], marker='x', color='g')
virginica_sc = plt.scatter(virginica['sepal length'],virginica['sepal width'], marker='v', color='k')

plt.legend((setosa_sc,versicolor_sc,virginica_sc), ('setosa','versicolor','virginica'),loc='upper left')
plt.grid(True)

# axis 설명 달기
plt.xlabel("sepal length")
plt.ylabel("sepal width")

plt.title("Iris dataset", fontsize= 20)

plt.rcParams["figure.figsize"] = (3,3) # 그래프 사이즈 설정.
Out[24]:
Text(0.5, 1.0, 'Iris dataset')
 
728x90
반응형

댓글