2016-04-15 10 views
0

私は、関連するエラーバーと各時間ポイントの平均による区分的線形回帰を使用してデータをグリッドにプロットしたいと考えています。私はパンダのデータフレームに自分のデータがあり、仕事をするために私たちに海賊したいと思います。seabornを持つFacetgridでの分割線形回帰とregplotの結合

私がシーボーンのfactorplotを使用すると、私は近くになります。

g = sns.factorplot(x="Time", y='value', hue="Name", 
       col="PEAK", data=meltdf, 
       size=4, aspect=1.0,col_wrap=3,sharey=False,scale=0.7) 

output for the factorplot

しかし、私が代わりにFacetGridとマップregplotとPLTを作成した場合、私のx軸は(factorplotは、カテゴリの比較のために設計されているので、これは理にかなって)正しく

を拡大縮小されていないことに注意してください。私はx軸上の正しい間隔を取得し、グリッド上にプロットし、等のエラーバーを保つが、線形回帰は、私がしたいかではない、それ

meltdf = pd.melt(Conc_norm.drop(['GLC','pan','Ratio %'],axis=1), 
id_vars=['Name','Time'], var_name='PEAK') 

g = sns.FacetGrid(meltdf, col="PEAK",hue='Name', col_wrap=4,sharey=False) 
g.map(sns.regplot, "Time", "value",fit_reg=False, x_estimator=np.mean); 
g.map(plt.plot, "Time", "value"); 

output for the Facetgrid mapped with regplot and plt.plot

ここで質問が来る: プロット内のポイント間に区分線形回帰をプロットするにはどうすればよいですか?

おかげで、

+0

を発見したようですプロットする前の 'Time'のデータフレーム – mwaskom

+0

時刻をソートすると外観は改善されますが、Time、valueのすべての座標に線が表示されます。私が欲しいのは何かを描くことです。 df.groupby( 'Time')。mean()しかし、私はそれを行う方法を理解することができません。 – atomman

+0

ああ、ええ、ちょっとプロット関数を書く必要があります。 – mwaskom

答えて

1

はネットをトロールとmwaskomの優れた回答の多くを読んだ後、私があなたの第二のアプローチは、ソートあなたの場合は動作するはずだと思う私は実用的なソリューション

def _plotmean(x, *args, **kwargs): 
    ax = plt.gca() 
    data = kwargs.pop('data') 
    data = data.groupby(x).mean() 
    data.plot(ax=ax, **kwargs) 

Conc_norm.sort_values('Time', inplace=True) 

meltdf = pd.melt(Conc_norm.drop(['GLC','pan','Ratio %'], axis=1), 
       id_vars=['Name','Time'], var_name='PEAK') 

g = sns.FacetGrid(meltdf, col="PEAK", hue='Name', col_wrap=3,sharey=False) 
g.map(sns.regplot, "Time", "value", fit_reg=False, x_estimator=np.mean) 
g.map_dataframe(_plotmean, "Time") 
g.add_legend() 

working output