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

如何在Plotly柱状图中添加指定列的悬停展示效果

Plotly 柱状图自定义悬停展示字段解决方案

核心调整逻辑

  • 渲染列筛选:仅保留SKU列作为柱状图的y轴渲染字段,排除Total_accounts、Total_purchases两个统计列,同时计算SKU占比时也仅用SKU列计算,避免统计值干扰占比结果
  • 自定义悬停数据:通过custom_data参数传入需要额外展示的两个统计列,再修改悬停模板完成字段展示

完整修改后代码

# 筛选所有SKU列,排除日期和统计列
sku_cols = [c for c in df.columns if c not in ["Date", "Total_accounts", "Total_purchases"]]

# 数据预处理:计算SKU列的行占比,再合并回统计列保证行对应
processed_df = df.set_index("Date")[sku_cols]\
                 .pipe(lambda d: d.div(d.sum(axis=1), axis=0))\
                 .reset_index()\
                 .merge(df[["Date", "Total_accounts", "Total_purchases"]], on="Date")

fig = px.bar(
    processed_df,
    x="Date",
    y=sku_cols,
    # 传入需要额外展示的统计列作为自定义悬停数据
    custom_data=["Total_accounts", "Total_purchases"]
).update_xaxes(
    title='Test', visible=True, showticklabels=True
).update_yaxes(
    title='Test', visible=True, showticklabels=False
).update_traces(
    # 自定义悬停模板,可根据需求调整展示格式
    hovertemplate='''
    日期: %{x}<br>
    SKU占比: %{y:.2%}<br>
    总账户数: %{customdata[0]}<br>
    总购买量: %{customdata[1]}
    <extra></extra>
    '''
)
fig.show()

说明

  • custom_data传入的字段顺序和hovertemplate中customdata[index]的索引一一对应
  • 模板末尾的<extra></extra>用于隐藏Plotly默认展示的trace名称,如需保留SKU名称展示可删除这段内容
  • 如果SKU列有固定命名规则(比如均以Sku开头),可将sku_cols的筛选逻辑改为[c for c in df.columns if c.startswith("Sku")],适配性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:48:03