2017-12-11 3 views
3

문제 : 몇 일간의 timeseries 데이터가 있습니다.이 데이터를 패싯 형식으로 플롯하기 위해 Seaborn python 라이브러리의 sns.FacetGrid 함수를 사용합니다. 몇몇 사례에서, 나는 언급 된 해번 함수가 두 줄 사이에 연속적인 누락 값 (nan 값)을 표시한다는 것을 발견했다. while matplotlib는 누락 된 값을 으로 표시합니다. 하기 matplotlib 플롯 갭 측값을 표시보다도 그것은 다음 플롯 enter image description hereSeaborn에서 누락 된 값을 플로트하지 마십시오.

결과로

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 
# create timeseries data for 3 days such that day two contains NaN values 
time_duration1 = pd.date_range('1/1/2018', periods=24,freq='H') 
data1 = np.random.randn(len(time_duration1)) 
ds1 = pd.Series(data=data1,index=time_duration1) 
time_duration2 = pd.date_range('1/2/2018',periods=24,freq='H') 
data2 = [float('nan')]*len(time_duration2) 
ds2 = pd.Series(data=data2,index=time_duration2) 
time_duration3 = pd.date_range('1/3/2018', periods=24,freq='H') 
data3 = np.random.randn(len(time_duration3)) 
ds3 = pd.Series(data=data3,index=time_duration3) 
# combine all three days series and then convert series into pandas dataframe 
DS = pd.concat([ds1,ds2,ds3]) 
DF = DS.to_frame() 
DF.plot() 

으로하는 데모 예이다. 지금 우리가 플롯 라인과 누락 된 데이터를 표시하는 방법을 시본

DF['col'] = np.ones(DF.shape[0])# dummy column but required for facets 
DF['timestamp'] = DF.index 
DF.columns = ['data_val','col','timestamp'] 
g = sns.FacetGrid(DF,col='col',col_wrap=1,size=2.5) 
g.map_dataframe(plt.plot,'timestamp','data_val') 

enter image description here

참조로 시본 기능에 대한 동일한 데이터를 준비 할 수 있습니다. 어떻게 그런 선으로 nan 값을 표시하지 않도록 해번을 강제해야합니까?

참고 : 이것은 더미 예제이며, 어떤 경우에도 데이터를 플롯하기 위해 패싯 격자가 필요합니다.

답변

5

FacetGrid 기본적으로 데이터에서 nan을 제거합니다. 그 이유는 seaborn 내부의 일부 함수가 nans와 제대로 작동하지 않기 때문입니다 (특히 통계 함수 중 일부는 말합니다).

g = sns.FacetGrid(DF,... , dropna=False) 
:

데이터에 nan 값을 유지하기 위해, dropna=False 인수 FacetGrid에를 사용

관련 문제