Seaborn.lineplot绘制SEM误差棒报错:'Line2D'对象无'errorbar'属性
问题解决:'Line2D' object has no property 'errorbar'
错误原因
你使用的Seaborn版本低于0.12.0,errorbar是Seaborn 0.12.0新增的参数,旧版本不支持该参数,会将其误传递给Matplotlib的Line2D对象,引发属性不存在的错误。
解决方案
方案1:升级Seaborn到最新版本
执行以下命令升级Seaborn:
pip install --upgrade seaborn # 若使用conda环境 conda update seaborn
升级后你的原有代码即可正常运行,errorbar='se'会正确指定使用均值标准误差(SEM),err_style='bars'会显示柱状误差棒。
方案2:适配旧版本Seaborn,替换参数
如果无法升级Seaborn,将errorbar='se'替换为旧版本支持的ci='se'参数,修改后的代码片段如下:
Graph1 = sns.lineplot(data=newerdf,x="caffeinatedbeveragesperdayrange", y="distance",err_style='bars',ci='se',ax=axes[0]) Graph2 = sns.lineplot(data=newerdf,x="caffeinatedbeveragesperdayrange", y="duration",err_style='bars',ci='se',ax=axes[1])
额外优化建议
你的x轴是分类变量,为了保证折线图的顺序符合你定义的区间顺序(<2→2-4→4-6→6-8→8+),可以将该列设置为有序分类:
newerdf['caffeinatedbeveragesperdayrange'] = pd.Categorical( newerdf['caffeinatedbeveragesperdayrange'], categories=names, ordered=True )
这样可以避免x轴按字母顺序乱序排列。
内容的提问来源于stack exchange,提问作者Caledonian26
相关产品推荐
相关产品推荐

