본문 바로가기

Data/Data Visualization

[Seaborn] seaborn line plotting tutorial

반응형

 

 

 

In [2]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")
 

relplot 기본설정은 scatter, 라인형식으로 바꾸려면 kind변수를 line으로 설정

In [3]:
df = pd.DataFrame(dict(time=np.arange(500),
                      value = np.random.randn(500).cumsum()))
g = sns.relplot(x='time', y='value', kind='line', data=df)
g.fig.autofmt_xdate()
 
 

일반적으로 x축을기반으로 순차적으로 라인그래프가 그려지는데 이는 sort 변수를 False로 설정하여 비활성화시킴

In [4]:
df = pd.DataFrame(np.random.randn(500, 2).cumsum(axis=0), columns=['x', 'y'])
sns.relplot(x='x', y='y', sort=False, kind='line', data=df)
Out[4]:
<seaborn.axisgrid.FacetGrid at 0x7facfa4d92b0>
 
 

한개의 x축에서 여러개 y값을 가질 때, seaborn에서는 평균값을 실선으로 95% confidence interval을 범위값으로 표현

In [5]:
fmri = sns.load_dataset('fmri')
sns.relplot(x='timepoint', y='signal', kind='line', data=fmri)
Out[5]:
<seaborn.axisgrid.FacetGrid at 0x7facfa824f98>
 
 

confidence interval을 비활성화를 하려면 ci 변수를 None으로 설정

In [6]:
sns.relplot(x='timepoint', y='signal', ci=None, kind='line', data=fmri)
Out[6]:
<seaborn.axisgrid.FacetGrid at 0x7face8550f28>
 
 

confidence interval이 아닌 표준편차를 보여주려면 ci변수를 sd로 설정

In [7]:
sns.relplot(x='timepoint', y='signal', ci='sd', kind='line', data=fmri)
Out[7]:
<seaborn.axisgrid.FacetGrid at 0x7facfa387e48>
 
 

만일 한개의 x축에 여러개 y값을 보여주고싶다면 estimator 값을 None으로 설정

In [10]:
sns.relplot(x='timepoint', y='signal', estimator=None, kind='line', data=fmri)
Out[10]:
<seaborn.axisgrid.FacetGrid at 0x7face8966828>
 
 

line그래프에 카테고리를 적용할경우 scatter형식과 마찬가지로 hue에 column이름을 설정

In [13]:
sns.relplot(x='timepoint', y='signal', hue='event', kind='line', data=fmri)
Out[13]:
<seaborn.axisgrid.FacetGrid at 0x7facb8cd6710>
 
In [14]:
sns.relplot(x="timepoint", y="signal", hue="region", style="event",
            kind="line", data=fmri);
 
 

마커유형도 지정이 가능하다 :)

In [15]:
sns.relplot(x="timepoint", y="signal", hue="region", style="event",
            dashes=False, markers=True, kind="line", data=fmri);
 
 

날짜형식 데이터 plotting

In [17]:
df = pd.DataFrame(dict(time=pd.date_range('2019-1-1', periods=200),
                      value=np.random.randn(200).cumsum()))
g = sns.relplot(x='time', y='value', kind='line', data=df)
g.fig.autofmt_xdate()
 
 

Appendix

관계형 데이터 plotting

In [19]:
tips = sns.load_dataset("tips")
sns.relplot(x='total_bill', y='tip', hue='smoker',
           col='time', data=tips)
Out[19]:
<seaborn.axisgrid.FacetGrid at 0x7facb8a2cba8>
 
In [20]:
sns.relplot(x='timepoint', y='signal', hue='subject',
           col='region', row='event', height=3,
           kind = 'line', estimator=None, data=fmri)
Out[20]:
<seaborn.axisgrid.FacetGrid at 0x7facfa91f048>
 
In [25]:
sns.relplot(x='timepoint', y='signal', hue='event', style='event',
           col='subject', col_wrap=5,
           height=3, aspect=.75, linewidth=2.5,
           kind='line', data=fmri.query("region == 'frontal'"))
Out[25]:
<seaborn.axisgrid.FacetGrid at 0x7facb93a3710>
 
반응형

'Data > Data Visualization' 카테고리의 다른 글

[Seaborn] seaborn scatter tutorial  (0) 2019.12.22
[Seaborn] seaborn 라이브러리 연습  (0) 2019.12.22