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

如何在pandas/seaborn绘制的直方图中添加统计信息文本框?

给Seaborn直方图添加统计信息文本框的半自动实现

我刚好搞定过类似的需求,不用手动计算统计值,代码里自动提取并生成带文本框的标注,完全适配你的场景,分享给你:

完整实现代码

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 假设你的combo DataFrame已经准备好
# 先计算需要的统计指标
resubmits_data = combo['resubmits']
mean_val = resubmits_data.mean().round(2)
stdev_val = resubmits_data.std().round(2)
n_val = resubmits_data.count()

# 构建标注文本,用换行整理格式
annot_text = f"""Mean: {mean_val}
Std Dev: {stdev_val}
Sample Size: {n_val}"""

# 绘制直方图(保留你原有的代码)
sns.distplot(combo['resubmits'], kde=False, bins=8)

# 添加带文本框的标注,位置可以根据你的图调整
plt.text(
    x=plt.gca().get_xlim()[1] * 0.75,  # x位置设为x轴上限的75%,避免遮挡
    y=plt.gca().get_ylim()[1] * 0.9,   # y位置设为y轴上限的90%
    s=annot_text,
    bbox=dict(facecolor='white', edgecolor='gray', alpha=0.8)  # 设置文本框样式:白色背景、灰色边框、半透明
)

# 保存图片
plt.savefig("g1.png")
plt.show()

关键细节说明

  • 半自动提取统计值:直接从DataSeries里计算均值、标准差和样本量,不用手动输入,数据更新时标注会自动同步
  • 文本框样式自定义:bbox参数可以调整背景色、边框颜色、透明度,适配你的图表风格
  • 位置自适应:用plt.gca().get_xlim()和get_ylim()获取当前轴的范围,计算标注位置,不用硬编码数值,换不同数据也能正常显示
  • 如果你的Seaborn是新版本(≥0.11.0),官方推荐用sns.histplot()替代distplot(),代码只需要把distplot换成histplot,其他逻辑完全一致

效果调整小技巧

如果觉得标注位置不合适,可以修改x和y的系数:

  • 想把标注移到更靠左的位置,就把x的系数调小(比如0.6)
  • 想移到更靠下的位置,就把y的系数调小(比如0.7)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:03:01