如何修改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
相关产品推荐
相关产品推荐

