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

如何为Plotly Express直方图的每个柱状条嵌入对应独立标签

结论

完全可以实现该效果,你可以选择提前聚合数据绘图,或者直接修改生成的直方图属性来达到需求,以下是两种可直接运行的实现方案:


方案1:通用预处理方案(适合任意数据量)

先对数据做分组聚合,统计每个x值对应的标签列表和数量,再绘图:

import plotly.express as px
import pandas as pd
    
df = pd.DataFrame({'name':['label1', 'label2','label3', 'label4', 'label1'],
                   'val1':[1,2,1,2,1]})

# 按x轴值分组,聚合去重后的标签、统计每个分组的数量
agg_df = df.groupby('val1', as_index=False).agg(
    # 可根据需求调整是否保留重复标签
    labels = ('name', lambda x: list(x.unique())),
    count = ('name', 'count')
)

# 绘图时指定text参数为聚合后的标签列
fig = px.bar(agg_df, x='val1', y='count', text='labels')
# 调整标签显示位置为柱子内部居中
fig.update_traces(textposition='inside')

fig.show()

如果你的x轴是连续数值需要自定义分箱规则,可以先使用pd.cut()方法对x列做分箱处理,再按分箱结果分组聚合标签即可,逻辑和上述代码完全一致。


方案2:快速修改方案(适合小数据量固定场景)

直接对生成的直方图的文本属性赋值:

import plotly.express as px
import pandas as pd
    
df = pd.DataFrame({'name':['label1', 'label2','label3', 'label4', 'label1'],
                   'val1':[1,2,1,2,1]})

fig = px.histogram(df, x='val1', nbins=3)
# 直接给每个柱子对应位置设置标签
fig.data[0].text = [['label1', 'label3'], ['label2', 'label4']]
fig.update_traces(textposition='inside')

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:09:02