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

Plotly直方图起始值为负数问题求助(无负值数据)

解决Plotly直方图指定分箱数时出现负起始值的问题

直接用xbins参数手动控制分箱范围和步长,就能同时满足固定分箱数量和从0开始分箱的需求,具体做法如下:

方法1:Plotly Express 手动设置分箱参数

假设你的原始代码是这样的(用nbins导致负起始值):

import plotly.express as px
fig = px.histogram(df, x='avg_time_per_user', nbins=20)
fig.show()

修改成手动指定分箱的起始值、结束值和步长:

import plotly.express as px

# 获取数据最大值,计算分箱步长(分箱数=20)
max_val = df['avg_time_per_user'].max()
bin_width = max_val / 20

fig = px.histogram(
    df, 
    x='avg_time_per_user',
    xbins=dict(
        start=0,       # 强制分箱从0开始
        end=max_val,   # 分箱结束于数据最大值
        size=bin_width # 控制分箱步长,间接固定分箱数量
    )
)
fig.show()

方法2:Plotly Graph Objects 结合范围与分箱数

如果用plotly.graph_objects,可以直接指定x轴范围+分箱数,更简洁:

import plotly.graph_objects as go

fig = go.Figure(data=[
    go.Histogram(
        x=df['avg_time_per_user'],
        nbinsx=20,                # 指定分箱数量
        range_x=[0, df['avg_time_per_user'].max()] # 强制x轴从0开始
    )
])
fig.show()

问题原因

Plotly的nbins(或nbinsx)只是建议性参数,它会自动调整分箱的起始值和步长,生成“更规整”的分箱(比如步长取整或易读的数值),这就导致即使数据没有负值,也可能会生成负的起始分箱来匹配它认为合适的步长。手动指定分箱范围或步长就能避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:50:29