seaborn¶
- 기존 matplotlib에 기본 설정을 추가
- 복잡한 그래프를 간단하게 만들 수 있는 wrapper
- https://seaborn.pydata.org/tutorial.html
In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
In [2]:
# seaborn의 기본 데이터셋
tips = sns.load_dataset("tips")
fmri = sns.load_dataset("fmri")
In [3]:
tips.sample(n=10,random_state=1)
Out[3]:
In [4]:
fmri.sample(n=10,random_state=1)
Out[4]:
In [5]:
sns.set(style='darkgrid')
# sns.set_style('darkgrid')
lineplot¶
In [6]:
sns.lineplot(x="timepoint", y="signal", data=fmri)
Out[6]:
위 그래프를 보면 중앙에 선으로 표시된 그래프와 영역으로 표시된부분으로 나타나게 된다. 이건 한 값에 여러개의 데이터가 있을 때 해당 값의 평균을 선으로 표시하고 나머지 값의 분포를 영역으로 그려주게 된다. 아래 0의 데이터 값을 확인해보면 56개의 데이터가 나온걸 확인 할 수 있다.
In [7]:
len(fmri[fmri['timepoint']==0])
Out[7]:
hue¶
In [8]:
print(fmri["event"].unique())
sns.lineplot(x="timepoint", y="signal", hue="event", data=fmri)
Out[8]:
hue
인자는 카테고리 값을 넣어준다.
scatterplot¶
In [9]:
sns.scatterplot(x="total_bill", y="tip", data=tips)
Out[9]:
In [10]:
sns.scatterplot(x="total_bill", y="tip", hue="time", data=tips)
Out[10]:
regplot¶
In [11]:
sns.regplot(x="total_bill", y="tip", data=tips)
Out[11]:
countplot¶
In [12]:
fig = plt.figure() # figure 반환
fig.set_size_inches(10, 4) # 크기지정
ax1 = fig.add_subplot(1, 2, 1) # 두개의 plot 생성
ax2 = fig.add_subplot(1, 2, 2) # 두개의 plot 생성
sns.countplot(x="smoker", data=tips,ax=ax1)
sns.countplot(x="smoker", hue="time", data=tips,ax=ax2)
plt.show()
barplot¶
In [13]:
sns.barplot(x="day", y="total_bill", data=tips)
Out[13]:
- 기본값은 평균을 계산해서 그려준다.
In [14]:
sns.barplot(x="day", y="total_bill", data=tips,estimator=len)
Out[14]:
estimator
인자에 집계함수를 써줘서 바꿔줄 수 있다.
displot¶
In [15]:
sns.displot(tips["total_bill"], bins=10)
Out[15]:
In [16]:
sns.displot(tips["total_bill"], bins=10, kde=True)
Out[16]:
kde
값은 분포 곡선을 나타낸다.
violinplot¶
In [17]:
fig = plt.figure() # figure 반환
fig.set_size_inches(15, 4) # 크기지정
ax1 = fig.add_subplot(1, 2, 1) # 두개의 plot 생성
ax2 = fig.add_subplot(1, 2, 2) # 두개의 plot 생성
sns.violinplot(x="day", y="total_bill", hue="smoker",data=tips, palette="muted",ax=ax1)
sns.boxplot(x="day", y="total_bill", hue="smoker",data=tips, palette="muted",ax=ax2)
Out[17]:
- boxplot과 비슷하지만 분포까지 같이 볼 수 있다.
swarmplot¶
In [18]:
sns.swarmplot(x="day", y="total_bill", hue="smoker",data=tips, palette="muted")
Out[18]:
- 개수를 산점도로 볼 수 있어 좀더 자세히 알수있다.
catplot¶
In [19]:
sns.catplot(x="day", y="total_bill", kind="swarm",data=tips)
Out[19]:
carplot
를 사용하면 여러 그림을 그릴 수 있다.kind
인자에 값을 넣어준다.
ex) 'swarm', 'box'...
FacetGrid¶
In [20]:
tips['time'].unique(), tips['sex'].unique()
Out[20]:
In [21]:
g = sns.FacetGrid(tips, col="time", row="sex")
In [22]:
g = sns.FacetGrid(tips, col="time", row="sex")
g.map(sns.scatterplot, "total_bill", "tip")
Out[22]:
map
함수를 써서 각 grid에 그린다.
In [23]:
g = sns.FacetGrid(tips, col="time", row="sex")
g.map_dataframe(sns.histplot, x="total_bill")
Out[23]:
'AI > 이론' 카테고리의 다른 글
뉴럴 네트워크 - MLP(이론) (0) | 2021.02.01 |
---|---|
PyTorch basic (0) | 2021.02.01 |
베이즈 통계학 (0) | 2021.02.01 |
통계학 (0) | 2021.01.29 |
matplotlib II (0) | 2021.01.29 |
matplotlib I (0) | 2021.01.29 |
확률론 맛보기 (0) | 2021.01.28 |
Pandas IV (0) | 2021.01.28 |