Python正态分布图填充95%置信区间并标注上下限的实现咨询
实现代码
你可以直接在原有代码基础上补充以下逻辑,完整可运行代码如下:
import numpy as np from scipy import stats import matplotlib.pyplot as plt # 原有绘图逻辑 x_axis = np.arange(-10, 10, 0.001) mu = np.mean(x_axis) sigma = np.std(x_axis) pdf = stats.norm.pdf(x_axis, loc=mu, scale=sigma) plt.plot(x_axis, pdf, label='正态分布概率密度') # 新增:计算95%置信区间上下限 ci_low = stats.norm.ppf(0.025, loc=mu, scale=sigma) ci_high = stats.norm.ppf(0.975, loc=mu, scale=sigma) # 新增:填充置信区间区域 plt.fill_between( x_axis, pdf, where=(x_axis >= ci_low) & (x_axis <= ci_high), color='skyblue', alpha=0.4, label='95% 置信区间' ) # 新增:标记置信区间上下限 # 加垂直线标记边界 plt.axvline(ci_low, color='gray', linestyle='--', linewidth=1) plt.axvline(ci_high, color='gray', linestyle='--', linewidth=1) # 在x轴上添加上下限数值刻度 plt.xticks(list(plt.xticks()[0]) + [round(ci_low, 2), round(ci_high, 2)]) # 可选:优化显示效果 plt.legend() plt.xlabel('x') plt.ylabel('概率密度') plt.show()
关键逻辑说明
stats.norm.ppf是正态分布的分位点函数,输入0.025和0.975的累积概率,就能直接得到双侧95%置信区间的上下边界fill_between的where参数用来限定只填充区间范围内的区域,alpha参数调整填充透明度,避免遮挡原本的密度曲线- 直接把置信区间上下限的数值加入x轴的刻度列表,就能在x轴上直观显示边界数值,也可以根据需要调整颜色、精度等样式参数
内容的提问来源于stack exchange,提问作者inic72
相关产品推荐
相关产品推荐

