Python中直方图X轴刻度与数值不匹配问题求助
解决直方图X轴刻度与数值不匹配的问题
你的问题核心是自动分箱(bins=10)导致分箱边界和手动设置的X轴刻度不对应,尤其是数据分布不均时,matplotlib的默认分箱逻辑会偏离预期的0-100等距区间。
修复方案
直接手动指定分箱边界,让每个分箱严格对齐X轴的10单位刻度:
- 导入numpy生成等距分箱数组
- 把
bins=10替换为bins=np.arange(0, 101, 10),分箱区间变为[0,10), [10,20), ..., [90,100],完全匹配X轴刻度 - 简化
num=[df2["GUARD"]]为df2["GUARD"],无需额外套列表
修改后的完整代码
import numpy as np import pandas as pd import matplotlib.pyplot as plt for i in files: # 读取指定列,read_excel返回的已是DataFrame,无需重复转换 df2 = pd.read_excel(f'C:/Users/carvi/Documents/report/eden/distribution/{i}', usecols=['FOCUS', 'GUARD','SPEED']) # 手动指定分箱边界,确保与X轴刻度精准对齐 hist = plt.hist(df2["GUARD"], bins=np.arange(0, 101, 10), density=False, cumulative=False, edgecolor='black') plt.xlim([0, 100]) # 刻度与显示文本一致,直接生成即可 plt.xticks(np.arange(0, 101, 10)) plt.xlabel("GUARD", size=10) plt.title('') plt.savefig(str(i) + '_GUARD' + '.png', dpi=1600) plt.show()
额外优化说明
原代码中df2=pd.DataFrame(histo,columns=['FOCUS','GUARD','SPEED'])属于冗余操作,pd.read_excel返回的结果本身就是DataFrame,直接赋值给df2即可。
内容的提问来源于stack exchange,提问作者YJP
相关产品推荐
相关产品推荐

