如何在 matplotlib 中为数据框中的多个组添加误差线?

我运行了多重回归并将系数和标准误差存储到这样的数据框中:

http://img3.mukewang.com/63a1500d0001406402260381.jpg

我想制作一个图表来显示每个组的系数随时间的变化情况,如下所示:


import matplotlib.pyplot as plt

import seaborn as sns


plt.figure(figsize=(14,8))


sns.set(style= "whitegrid")


sns.lineplot(x="time", y="coef",

             hue="group",

             data=eventstudy)

plt.axhline(y=0 , color='r', linestyle='--')

plt.legend(bbox_to_anchor=(1, 1), loc=2)

plt.show

plt.savefig('eventstudygraph.png')

哪个产生:

http://img2.mukewang.com/63a1501900012c7209260480.jpg

但我想使用我的主数据集中的“stderr”数据来包含错误栏。我想我可以使用“plt.errorbar”来做到这一点。但似乎无法弄清楚如何让它发挥作用。目前,我尝试添加 'plt.errorbar 行并尝试不同的迭代:


import matplotlib.pyplot as plt

import seaborn as sns


plt.figure(figsize=(14,8))


sns.set(style= "whitegrid")


sns.lineplot(x="time", y="coef",

             hue="group",

             data=eventstudy)

plt.axhline(y=0 , color='r', linestyle='--')

plt.errorbar("time", "coef", xerr="stderr", data=eventstudy)

plt.legend(bbox_to_anchor=(1, 1), loc=2)

plt.show

plt.savefig('eventstudygraph.png')

http://img4.mukewang.com/63a1502b0001a23b09210477.jpg

如您所见,它似乎在图表中创建了自己的组/线。如果我只有一组,我想我会知道如何使用“plt.errorbar”,但我不知道如何让它适用于 3 个组。有什么方法可以制作 3 个版本的“plt.errorbar”,这样我就可以分别为每个组创建错误栏了吗?或者有更简单的东西吗?



慕虎7371278
浏览 199回答 1
1回答

慕妹3146593

您需要遍历不同的组,并分别绘制误差线,上面的内容是一次绘制所有误差线:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsnp.random.seed(111)df = pd.DataFrame({"time":[1,2,3,4,5]*3,"coef":np.random.uniform(-0.5,0.5,15),                   "stderr":np.random.uniform(0.05,0.1,15),                   "group":np.repeat(['Monthly','3 Monthly','6 Monthly'],5)})fig,ax = plt.subplots(figsize=(14,8))sns.set(style= "whitegrid")lvls = df.group.unique()for i in lvls:    ax.errorbar(x = df[df['group']==i]["time"],                y=df[df['group']==i]["coef"],                 yerr=df[df['group']==i]["stderr"],label=i)ax.axhline(y=0 , color='r', linestyle='--')ax.legend()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python