我有一个数据集,每个时间步长由三个值组成:平均值以及误差上下限。
name,year,area
test,2017,1.0376800009967053 #mean
test,2017,0.09936810445983806 #lower bound
test,2017,2.118230806622908 #upper bound and so on ...
test,2018,1.0
test,2018,0.13705391957353763
test,2018,2.1881023056535183
test,2019,1.2928531655977922
test,2019,0.17400072775054737
test,2019,3.016064939443665
我想对数据进行绘制,以便在上下限之间得到一个阴影区域,并且在两者之间有一条线跟随数据集中的平均值。
我尝试过seaborn.lineplot (https://seaborn.pydata.org/examples/errorband_lineplots.html) 但是,它计算树值的平均值,因此该线不在实际平均值应在的位置。 任何人都有想法吗? 是否可以更改seaborn计算中心线的方式? (例如中位数)
答案 0 :(得分:1)
您可以使用estimator
的{{1}}关键字。在documentation中,您可以找到有关此内容的信息:
估计器:熊猫方法的名称或可调用的或
seaborn.lineplot
,可选一种方法,用于汇总同一
None
级别的y
变量的多个观察值。如果为x
,将绘制所有观察结果。
None
的默认值为estimator
,它解释了问题中描述的观察结果。因此,您可以定义一个mean
函数,始终选择同一lambda
的三个值中的第一个值。
year
使用
lambda x: x[0]
给出您想要的情节。
如果您想使用import seaborn as sns
sns.lineplot(x='year', y='area', data=df, estimator=lambda x: x[0], marker='o')
,请在median
之前使用import numpy as np
。