【发布时间】:2016-08-07 09:49:23
【问题描述】:
我想在网格上绘制我的数据以及相关的误差条和通过每个时间点的平均值进行的分段线性回归。我将我的数据保存在 pandas 数据框中,并希望我们 seaborn 来完成这项工作。
如果我使用 seaborns 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)
但请注意,我的 xaxis 没有正确缩放(这是有道理的,因为 factorplot 是为分类比较而设计的)
如果我改为创建 FacetGrid 并将 regplot 和 plt.plot 映射到网格上,我会在 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
现在问题来了: 如何在图中的点之间绘制分段线性回归?
谢谢,
【问题讨论】:
-
我认为如果您在绘图之前对
Time上的数据框进行排序,您的第二种方法应该可以工作。 -
按时排序会改善外观,但仍会在所有时间、值坐标中绘制一条线。我想要的是绘制一些东西。 df.groupby('Time').mean() 但我不知道该怎么做
-
啊,是的,那你需要写一个小绘图函数。