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

Plotly多组数据重叠概率直方图概率值异常问题求助

问题解决方法

核心问题分析

  1. barmode='relative'的异常概率:这个模式会将多组直方图的数值进行加减叠加,并非单组的概率归一化计算,多组叠加后概率值会累加,导致远高于单组的6%,完全不适合用来展示单组的概率分布对比。
  2. overlay模式与Excel不符:Plotly默认会为每组数据单独计算直方图的bin区间,三组数据的bin边界、范围不一致,导致每组的概率计算基于不同的区间,自然和Excel中统一bin区间下计算的概率结果不符。

解决步骤

1. 统一三组数据的直方图bin区间

必须让三组数据使用完全相同的bin范围和边界,才能保证概率计算的基准一致,和Excel结果对齐:

  • 先计算所有三组数据的全局最小值和最大值,确定bin的整体范围
  • 生成固定数量的等宽bin区间

2. 修改代码实现统一bin

import plotly.graph_objects as go
import numpy as np
import pandas as pd

# 假设你的df已经包含DataA、DataB、DataC
df['DataA'] = .... 
df['DataB'] = .... 
df['DataC'] = .... 

# 计算全局的bin范围和区间
all_data = pd.concat([df['DataA'], df['DataB'], df['DataC']])
bin_min = all_data.min()
bin_max = all_data.max()
num_bins = 1000  # 保持和原代码一致的bin数量

# 生成统一的等宽bin区间
bin_size = (bin_max - bin_min) / num_bins

histnorm = 'probability'

# 初始化图表
fig = go.Figure()

# 添加每组数据的直方图,强制使用统一bin参数
fig.add_trace(go.Histogram(
    x=df['DataA'],
    xbins=dict(start=bin_min, end=bin_max, size=bin_size),
    histnorm=histnorm,
    name='Data A',
    opacity=0.7
))

fig.add_trace(go.Histogram(
    x=df['DataB'],
    xbins=dict(start=bin_min, end=bin_max, size=bin_size),
    histnorm=histnorm,
    name='Data B',
    opacity=0.7
))

fig.add_trace(go.Histogram(
    x=df['DataC'],
    xbins=dict(start=bin_min, end=bin_max, size=bin_size),
    histnorm=histnorm,
    name='Data C',
    opacity=0.7
))

# 配置图表样式
fig.update_layout(
    title='My Chart',
    barmode='overlay',
    xaxis=dict(title='', showline=True, showgrid=False),
    yaxis=dict(title='', showline=True, showgrid=False, tickformat=',.0%')
)

fig.show()

关键修改点说明

  • 用全局数据的极值计算统一bin的范围和宽度,确保三组数据的每个bin对应的x轴区间完全一致
  • 显式指定每组直方图的xbins参数,强制使用统一的bin规则
  • histnorm='probability'会对每组数据单独做概率归一化(每组所有bin的概率和为100%),和Excel中“每组在统一bin下计算频率/概率”的逻辑完全匹配

额外验证建议

可以抽取几组bin区间,手动计算每组数据在该区间内的数量占比,和Excel的结果对比,确认bin统一后概率值是否对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:46:12