Python 如何使用Seaborn的FaceGrid在每个绘图(时间序列的趋势)上添加不同的线
我想画一些图表,比如不同地点自行车计数的时间序列: 但在这张图上加上每个时间序列的趋势 就像这里解释的:,但是每个图上有不同的线,所以我没有做到像他们一样 背景: 我的数据如下所示:Python 如何使用Seaborn的FaceGrid在每个绘图(时间序列的趋势)上添加不同的线,python,time-series,seaborn,facet-grid,Python,Time Series,Seaborn,Facet Grid,我想画一些图表,比如不同地点自行车计数的时间序列: 但在这张图上加上每个时间序列的趋势 就像这里解释的:,但是每个图上有不同的线,所以我没有做到像他们一样 背景: 我的数据如下所示: date lieu nombre 0 2016-05-01 Avenue Gambetta 14.000 1 2016-05-01 Avenue Gaston Berger 2.625 2 20
date lieu nombre
0 2016-05-01 Avenue Gambetta 14.000
1 2016-05-01 Avenue Gaston Berger 2.625
2 2016-05-01 Avenue Victor Hugo 5.000
3 2016-05-01 Avenue de la République 5.250
4 2016-05-01 Avenue des Belges 5.875
我用下面的代码绘制了上面的第一张图:
g = sns.FacetGrid(data, col="lieu", col_wrap=4, hue_kws={"ls":["--"]})
g.map(plt.plot, "date", "nombre")
通过数据透视,我得到以下时间序列:
ts
lieu Avenue Gambetta Avenue Gaston Berger Avenue Victor Hugo Avenue de l'Europe
date
2016-09-01 15.5 3.500 4.25 2.750
2016-10-01 8.0 3.750 3.25 3.750
2016-11-01 7.5 1.875 3.75 3.250
2016-12-01 9.5 1.125 4.00 1.125
2017-01-01 4.5 1.250 4.00 2.000
我用以下公式计算了时间序列的趋势:
ts_decompose = seasonal_decompose(ts, model='additive',freq=12)
ts_decompose.trend.iloc[5:10]
lieu Avenue Gambetta Avenue Gaston Berger Avenue Victor Hugo Avenue de l'Europe
date
2017-02-01 8.9625 2.77500 3.7875 2.87500
2017-03-01 9.0750 2.69375 4.0750 3.09375
2017-04-01 9.3750 2.68125 4.3375 3.16875
2017-05-01 9.3250 2.75000 4.3125 3.24375
2017-06-01 9.3375 2.81250 4.2375 3.33125
但我不知道如何在我的第一张图上添加趋势线,我没有FaceGrid,但没有FaceGrid。
你有办法帮我吗
谢谢大家! 可能有一种更简单的方法,但您可以先手动创建多个轴,然后在所需的轴上绘制每个函数。因此,首先创建四个轴:
fig, axs = plt.subplots(ncols=4)
然后,对于第一个坐标轴,做一些类似的事情,我不确定数据的结构基本上是如何使用第一个坐标轴上的原始数据和第二个坐标轴上的趋势数据:
sns.plot(x='lieu', y='nombre', data=data[data['lieu']=='Avenue Gambetta'], ax=axs[0])
sns.plot(x='lieu', y='trend', data=trenddata[trenddata['lieu']=='Avenue Gambetta'], ax=axs[0])
使用axs[1]和其他替代品等