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

Matplotlib绘制直方图提取最大Y对应X值时无输出如何解决

问题根因

是Python 3的print语法使用错误,属于入门级语法问题。
你代码里的print('maxbin'), b[bin_max][0]写法,在Python 3中print是必须用括号包裹参数的内置函数,这行代码实际执行逻辑是:

  • 先单独调用print('maxbin'),所以终端只会输出maxbin字符串
  • 逗号后面的b[bin_max][0]完全没有被传入print函数,只是一个孤立的表达式,计算完成后没有任何输出动作就被丢弃,自然不会打印你要的X值。
修正方案

把打印行的所有待输出内容都放进print的括号内即可,修正后的完整函数代码:

def Plot_show_us(dfus, dfdus, dfnus):
    x = dfus['O18ad']
    bins=[-22,(...),22] # 此处替换为你实际使用的分箱边界列表
    n, b, patches =plt.hist(x, bins, alpha=0.65, label='old')
    bin_max = np.where(n == n.max())
    # 修正print语法,所有打印内容传入括号
    print('maxbin', b[bin_max][0])
    plt.legend(loc='upper right')

补充优化点:如果存在多个频次相同的最高频分箱,np.where会返回所有匹配的分箱索引,如果你只需要取第一个最高频分箱对应的边界值,可以直接用bin_max_idx = n.argmax()替换np.where的写法,再通过b[bin_max_idx]取值,逻辑更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:39:19