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

如何将DataFrame元数据行作为Plotly柱状图的悬停数据

解决方案

完全可以实现,核心是先分离样本数据和元数据,再将元数据映射到对应的变量,添加到悬停信息中。具体步骤如下:

1. 分离样本数据与元数据

首先从原DataFrame中提取用于绘图的样本行(前22行)和元数据行(最后6行),并将元数据转置为以变量名为索引的格式,方便后续调用:

# 分离样本数据(前22行)和元数据(最后6行)
sample_data = df_plot.iloc[:-6].copy()
# 转置元数据,让变量名作为行索引,元数据项作为列
metadata = df_plot.iloc[-6:].set_index('Strain').T

2. 绘制柱状图并添加元数据到悬停信息

使用px.bar绘制图表后,遍历每个变量对应的trace,自定义悬停模板(hovertemplate),将对应变量的元数据整合进去:

# 创建水平柱状图
fig = px.bar(sample_data, y="Strain", x=sample_data.columns[1:], 
             orientation="h", template="simple_white", 
             width=800, height=1000, 
             color_discrete_sequence=px.colors.qualitative.Light24)

# 遍历每个变量对应的trace,添加元数据到悬停文本
for idx, var_name in enumerate(sample_data.columns[1:]):
    # 获取当前变量的所有元数据
    var_metadata = metadata.loc[var_name].to_dict()
    # 构建悬停文本模板
    hover_template = f"样本: %{{y}}<br>变量: {var_name}<br>数值: %{{x}}"
    # 逐个添加元数据项
    for meta_key, meta_value in var_metadata.items():
        hover_template += f"<br>{meta_key}: {meta_value}"
    # 更新当前trace的悬停模板
    fig.data[idx].hovertemplate = hover_template

fig.show()

关键说明

  • 必须移除元数据行再绘图,否则元数据会被当作样本显示在y轴上,不符合需求。
  • 转置元数据后,每个变量对应一行数据,能快速提取该变量的所有元信息。
  • 通过自定义hovertemplate,可以精准控制悬停时显示的内容,将样本、变量、数值和元数据整合在一起。

内容的提问来源于stack exchange,提问作者Luis Manuel Quiros guerrero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:32:21