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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:15:22