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

如何修改Seaborn直方图Y轴以显示实际数据点计数?

解决Seaborn直方图Y轴显示实际计数的问题

嘿,这个问题我之前也碰到过,给你捋捋怎么搞定~

你现在遇到的情况是:用seaborn.distplot画直方图时,Y轴显示的是密度而非实际数据点的计数。这是因为当你使用fit参数拟合分布(比如这里的正态分布)时,distplot默认会把直方图归一化到密度刻度,目的是让拟合的曲线能和直方图的轴对齐。

解决方案

只需要在distplot函数里加个stat="count"参数,就能强制Y轴显示实际的计数数值。

修改后的完整代码

import seaborn as sns
import matplotlib.pyplot as plt
import scipy as sp

sns.set_style("white")
plt.figure(figsize=(12,10))
plt.xlabel('a', fontsize=18)
plt.ylabel('Frequency', fontsize=18)
plt.title ('Title of Graph', fontsize=22)
# 关键添加stat="count"参数,指定Y轴为实际计数
sns.distplot(st, bins='fd', kde=False, fit=sp.stats.norm, 
             fit_kws={"color":"red"},
             hist_kws={"rwidth":0.75, 'range':(0,1), 'edgecolor':'black', 'alpha':1.0}, 
             axlabel='Ratio ',
             stat="count")
plt.show()

额外提醒

要注意的是,设置stat="count"后,你拟合的正态分布曲线的Y轴刻度会和直方图的计数刻度不匹配(毕竟正态分布输出的是密度值):

  • 如果你的核心需求就是展示实际计数的直方图,可以直接去掉fit=sp.stats.norm参数,这样图表会更协调;
  • 如果一定要保留拟合曲线,可能需要添加双Y轴分别显示计数和密度,但这会增加图表复杂度,得根据你的实际需求权衡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:18:39