2017-07-26 16 views
2

matplotlibとseabornを使用してスムージング折れ線グラフを作成したいと思います。seaborn tsplotのマルチラインチャート

これは私のデータフレームdfある:

hour direction hourly_avg_count 
0  1   20 
1  1   22 
2  1   21 
3  1   21 
..  ...   ... 
24  1   15 
0  2   24 
1  2   28 
...  ...   ... 

折れ線グラフが2に等しいdirection X軸用の別のhourであり、Y軸はhourly_avg_countで、二行、1に等しいdirectionための1つを含むべきです。

私はこれを試しましたが、私は線を見ることができません。

import pandas as pd 
import seaborn as sns 
import matplotlib 
import matplotlib.pyplot as plt 

plt.figure(figsize=(12,8)) 
sns.tsplot(df, time='hour', condition='direction', value='hourly_avg_count') 
+1

ここで 'tsplot'を使う理由はないので、パンダのプロット方法で十分です。 – mwaskom

答えて

6

tsplotは少し奇妙であるか、または少なくともstrangly文書。データフレームが供給されている場合は、unitとの列が存在する必要があると想定しています。内部的にこれらの2つをピボットします。 tsplotを使用して複数の時系列をプロットするには、unitにも引数を渡す必要があります。これはconditionと同じにすることができます。

sns.tsplot(df, time='hour', unit = "direction", 
       condition='direction', value='hourly_avg_count') 

コンプリート例:また

import numpy as np 
import pandas as pd 
import seaborn as sns 
import matplotlib.pyplot as plt 

hour, direction = np.meshgrid(np.arange(24), np.arange(1,3)) 
df = pd.DataFrame({"hour": hour.flatten(), "direction": direction.flatten()}) 
df["hourly_avg_count"] = np.random.randint(14,30, size=len(df)) 

plt.figure(figsize=(12,8)) 
sns.tsplot(df, time='hour', unit = "direction", 
       condition='direction', value='hourly_avg_count') 

plt.show() 

enter image description here

seabornバージョン0.8のようtsplot is deprecatedことが注目に値します。とにかく、データをプロットするために他の方法を使用する価値があるかもしれません。

1

ダミーユニットの列を追加してみてください。最初の部分はいくつかの合成データを作成することですので、無視してください。

import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 
import numpy as np 

df1 = pd.DataFrame({ 
"hour":range(24), 
"direction":1, 
"hourly_avg_count": np.random.randint(25,28,size=24)}) 

df2 = pd.DataFrame({ 
"hour":range(24), 
"direction":2, 
"hourly_avg_count": np.random.randint(25,28,size=24)}) 

df = pd.concat([df1,df2],axis=0) 
df['unit'] = 'subject' 

plt.figure() 
sns.tsplot(data=df, time='hour', condition='direction', 
unit='unit', value='hourly_avg_count') 

enter image description here