对于Seaborn线图,通过指定ci='sd'来绘制标准差似乎很容易。有没有办法画出2倍的标准差?例如,我有一个像这样的图表:
ci='sd'
sns.lineplot(data=df, ax=x, x='day_of_week', y='y_variable', color='lightgrey', ci='sd')
有没有办法使“CI”是标准差的2倍?
cclgggtu1#
最近版本的seaborn(>v0.12)改变了如何指定误差条,并且现在允许传递比例参数以及误差测量的选择(例如,标准偏差)。查看此链接Statistical estimation and error bars了解更多信息。因此,要在Seaborn中绘制2x标准差,您只需传递此参数:errorbar=('sd', 2)
errorbar=('sd', 2)
ccrfmcuu2#
我没有在seaborn中找到解决方案,但一种方法是使用matplotlib.pyplot.fill_between,例如,在this answer中完成,但也在the thread suggested in the comments中完成。下面是我的实现:
seaborn
matplotlib.pyplot.fill_between
import matplotlib.pyplot as plt import seaborn as sns sns.set_theme() flights = sns.load_dataset("flights") fig, axs = plt.subplots(1, 2, figsize=(12, 6), sharey=True) sns.lineplot(data=flights, x="year", y = "passengers", ci="sd", ax=axs[0]) axs[0].set_title("seaborn") nstd = 1. means = flights.groupby("year")["passengers"].mean() stds = flights.groupby("year")["passengers"].std() axs[1].plot(means.index, means.values) for nstd in range(1, 4): axs[1].fill_between(means.index, (means - nstd*stds).values, (means + nstd*stds).values, alpha=0.3, label="nstd={}".format(nstd)) axs[1].legend(loc="upper left") axs[0].set_title("homemade") plt.savefig("./tmp/flights.png") plt.close(fig)
结果图形为
2条答案
按热度按时间cclgggtu1#
最近版本的seaborn(>v0.12)改变了如何指定误差条,并且现在允许传递比例参数以及误差测量的选择(例如,标准偏差)。
查看此链接Statistical estimation and error bars了解更多信息。
因此,要在Seaborn中绘制2x标准差,您只需传递此参数:
errorbar=('sd', 2)
ccrfmcuu2#
我没有在
seaborn
中找到解决方案,但一种方法是使用matplotlib.pyplot.fill_between
,例如,在this answer中完成,但也在the thread suggested in the comments中完成。下面是我的实现:
结果图形为