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

Plotly Express堆叠条形图hover_data显示异常问题求助

解决Plotly Express堆叠条形图hover_data显示冗余信息的问题

你的问题出在使用宽格式数据绘制堆叠条形图时,hover_data会将指定的所有列都显示出来——因为宽格式中每一行对应一个国家的所有奖牌数据,hover时会读取整行的所有reason列。要实现hover仅显示当前条形对应的reason,需要先将数据转换为长格式,再绘制图表。

解决步骤:

  1. 将宽格式的wide_df转换为长格式,让每个奖牌类型对应单独的行,并关联对应的reason列
  2. 基于长格式数据绘制条形图,此时hover_data只需指定对应的reason字段

完整代码示例:

import plotly.express as px
import pandas as pd

# 将宽格式转长格式
melted_df = pd.concat([
    # 处理gold相关数据
    wide_df[['nation', 'gold', 'gold reasons']]
    .rename(columns={'gold': 'count', 'gold reasons': 'reason'})
    .assign(medal='gold'),
    # 处理silver相关数据
    wide_df[['nation', 'silver', 'silver reasons']]
    .rename(columns={'silver': 'count', 'silver reasons': 'reason'})
    .assign(medal='silver'),
    # 处理bronze相关数据
    wide_df[['nation', 'bronze', 'bronze reasons']]
    .rename(columns={'bronze': 'count', 'bronze reasons': 'reason'})
    .assign(medal='bronze')
])

# 绘制水平堆叠条形图
fig = px.bar(
    melted_df,
    x='count',
    y='nation',
    color='medal',
    title="Reasons for Success",
    orientation='h',
    color_discrete_map={'gold':'green', 'silver':'grey', 'bronze':'red'},
    hover_data=['reason']  # 仅显示当前条形对应的reason
)
fig.show()

原理说明:

  • 长格式数据中,每一行对应一个国家的单个奖牌类型数据,包含nation、count、medal和reason四个字段
  • 绘制图表时,每个条形对应长格式中的一行数据,hover时只会读取当前行的reason字段,不会显示其他奖牌类型的reason

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:17:14