【问题标题】:Seaborn/Matplotlib create custom error band along lineSeaborn/Matplotlib 沿线创建自定义错误带
【发布时间】:2020-09-02 23:17:47
【问题描述】:

我有一个实验,有 10 个参与者,每个参与者收集了 96 个准确度。 acc_i 表示参与者在时间步 i 的整体准确度。因此,我有一个 10x96 的 numpy 矩阵,如下所示:

[[acc_0,acc_1,acc_2,...acc_95]
 [acc_0,acc_1,acc_2,...acc_95]
 [acc_0,acc_1,acc_2,...acc_95]
            .
            .
            .
 [acc_0,acc_1,acc_2,...acc_95]]

我想绘制一条所有参与者在每个时间步长的平均准确度线,以及一个显示平均 +- 1 标准偏差的误差带。我可以使用pd.Series(np.average(human_accuracies, axis=0))pd.Series(np.std(human_accuracies, axis=0)) 分别计算平均偏差和标准偏差。但是,当我使用时,这会在图表上给我两条单独的线:

sns.lineplot(data=avg_accuracies)
sns.lineplot(data=sd_accuracies)

如下图所示:

我怎样才能让我的情节更像这里所示:

我希望使用每个时间步的标准偏差 i +- 每个时间步的平均准确度 i 来计算误差带。

【问题讨论】:

标签: python matplotlib graph seaborn average


【解决方案1】:

你可以像这样使用plt.fill_between

plt.fill_between(x=np.arange(len(avg_accuracies)),
                 y1=avg_accuracies - sd_accuracies,
                 y2=avg_accuracies + sd_accuracies,
                 alpha=0.25
                 )
plt.plot(np.arange(len(avg_accuracies)), avg_accuracies)

输出:

【讨论】:

    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 2015-08-03
    • 2016-08-25
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多