我在 pandas 中有以下数据框:
>>>name Hour trt_level stress date value
0 D43 9 H control 2019-06-07 0.4561
1 D43 10 H control 2019-06-07 0.3216
2 D42 8 M stress 2019-06-07 0.2143
3 D42 9 M stress 2019-06-07 0.1342
4 D21 8 L stress 2019-06-07 0.3214
...
我想用 mse/std 创建带有误差栏的折线图,如下所示:
from : https://matplotlib.org/1.2.1/examples/pylab_examples/errorbar_demo.html但是 https://matplotlib.org/1.2.1/examples/pylab_examples/errorbar_demo.htmlbut就我而言:X 轴应该是小时,y 轴应该是值,三行,每一行代表治疗级别(trt_level),所以行代表 H、M、L。
为了做到这一点,我使用了函数 groupby 和 agg :
data = df.groupby(['trt_level','Hour']).agg([np.mean, np.std])
data.head()
>>> value
mean std
trt_level Hour
H 7 0.231 0.0058
8 0.212 0.0094
9 0.431 0.1154
...
这给了我数据库,其中包含治疗和时间作为索引以及值的平均值和标准差,
但问题是,当我尝试绘制它时,我只得到一行,上面没有 std:
data = data['value']
qual.plot(kind = "line", y = "mean", legend = False,
xerr = "std", title = "test", color='green')
当我想要的结果应该有三行,并且 std 位于顶部时(如果可以是 MES 而不是 std 更好,但对于这个问题,我更多地关注三行和 std 的显示)
我的最终目标是获得更像这样的图表(对于可怕的抽签感到抱歉):
但一直以来