You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python用seaborn绘制直方图及添加均值方差四分位数标注方法

问题解答

一、现有实现正确性判断

  • 概率计算逻辑:你的循环使用range(100),i的取值是0~99,如果你的业务需求中i需要从1开始计数,可调整为range(1,101),否则当前逻辑没问题。
  • 统计量计算:
    • 均值计算逻辑正确
    • 方差当前用statistics.variance计算的是样本方差,若你需要总体方差,可替换为statistics.pvariance(probability)
    • 四分位数用np.quantile计算逻辑正确
  • 绘图逻辑:当前sns.displot可以正常输出直方图和KDE曲线,若要展示概率密度而非样本计数,可添加参数stat="density",更贴合概率分布的展示场景。

二、添加统计量到图表的实现方案

你可以通过添加垂直参考线标注均值、四分位数位置,同时在角落添加文本框展示所有统计量的数值,修改后的完整代码如下:

import seaborn as sns
import numpy as np
import math
import statistics
import matplotlib.pyplot as plt

# 计算概率值
probability = []
# 如果你需要i从1开始,把range(100)改成range(1,101)即可
for i in range(100):
    probability.append((61/99) * math.e**(-0.5 * i) + (38/99) * math.e**(-0.25 * i))

# 计算统计量
mean = sum(probability)/float(len(probability))
variance = statistics.variance(probability)
q25 = np.quantile(probability, 0.25)
q50 = np.quantile(probability, 0.5)
q75 = np.quantile(probability, 0.75)

# 绘图
g = sns.displot(probability, bins=100, kde=True, stat="density")
ax = g.ax  # 获取绘图轴对象

# 添加垂直参考线
ax.axvline(mean, color='red', linestyle='-', linewidth=2, label=f'均值: {mean:.4f}')
ax.axvline(q25, color='orange', linestyle='--', linewidth=2, label=f'25分位数: {q25:.4f}')
ax.axvline(q50, color='green', linestyle='--', linewidth=2, label=f'50分位数(中位数): {q50:.4f}')
ax.axvline(q75, color='purple', linestyle='--', linewidth=2, label=f'75分位数: {q75:.4f}')

# 添加统计量文本框
text_str = '\n'.join((
    f'均值 = {mean:.4f}',
    f'方差 = {variance:.4f}',
    f'25%分位数 = {q25:.4f}',
    f'50%分位数 = {q50:.4f}',
    f'75%分位数 = {q75:.4f}'
))
# 在右上角添加文本框,bbox参数是设置文本框的样式
ax.text(0.95, 0.95, text_str, transform=ax.transAxes,
        verticalalignment='top', horizontalalignment='right',
        bbox=dict(boxstyle='round', facecolor='white', alpha=0.8))

# 添加图例
ax.legend()
# 显示图表
plt.show()

代码说明:

  • 新增了matplotlib.pyplot的导入,用来做更灵活的图表自定义
  • 垂直参考线用不同颜色区分,会自动显示在图例中
  • 右上角的文本框会展示所有统计量的数值,背景设为半透明白色,不会遮挡图表内容

内容的提问来源于stack exchange,提问作者Stefan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:57:04