Seaborn/Matplotlib 沿线创建自定义误差带
Seaborn/Matplotlib create custom error band along line
我有一个实验,有 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
。
您可以这样使用 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)
输出:
我有一个实验,有 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
。
您可以这样使用 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)
输出: