python 对正态分布下的 95% 置信区域进行着色

python shading the 95% confidence areas under a normal distribution

我有以下正态分布图

x_axis = np.arange(-10, 10, 0.001)
pdf = stats.norm.pdf(x_axis, np.mean(x_axis), np.std(x_axis))
plt.plot(x_axis, pdf)

我想shade/highlight正态分布下的95%置信区间。我也想在x轴上标注95%的上限值和下限值

非常感谢您的帮助!

您可以使用 plt.fill_between.

我在这里使用标准正态分布 (0,1),因为您对 x_axis 的计算会使显示范围太窄而无法看到填充。

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

x_axis = np.arange(-10, 10, 0.001)

avg = 0
std = 1

pdf = stats.norm.pdf(x_axis, avg, std)
plt.plot(x_axis, pdf)

std_lim = 1.96 # 95% CI
low = avg-std_lim*std
high = avg+std_lim*std

plt.fill_between(x_axis, pdf, where=(low < x_axis) & (x_axis < high))
plt.text(low, 0, low, ha='center')
plt.text(high, 0, high, ha='center')