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

Plotly如何在hovertemplate中添加x、y之外的其他自定义数据字段

问题原因与解决方案

核心错误点

  • 最初的写法问题:Plotly的hovertemplate是独立的模板语法,运行时不会读取Python环境中的df变量,直接写%{df['xxx']}属于语法误用
  • 调整后的代码问题:你仅在全局定义了全量数据集的customdata,但没有给每个按大陆拆分的trace单独传入对应的子数据集customdata,模板找不到对应数据自然无法正常渲染

修正后的可运行代码

import numpy as np
import plotly.graph_objects as go

# 筛选1952年数据
df = df[df['year'] == 1952]
fig = go.Figure()

for continent in df['continent'].unique():
    # 筛选当前大陆的子数据集
    df_by_continent = df[df['continent'] == continent]
    # 给当前trace单独构造对应的customdata
    trace_customdata = np.stack((df_by_continent['continent'], df_by_continent['country']), axis=-1)
    fig.add_trace(go.Scatter(
        x=df_by_continent['gdpPercap'], 
        y=df_by_continent['lifeExp'],
        mode='markers',
        opacity=.7,
        marker = {'size':15},
        name=continent,
        # 传入当前trace对应的customdata
        customdata = trace_customdata,
        hovertemplate=
            'Continent: %{customdata[0]}<br>'+
            'Country: %{customdata[1]}<br>'+
            'gdpPercap: %{x:,.4f} <br>'+
            'lifeExp: %{y}'+
            '<extra></extra>',
    ))

fig.update_layout(
    title="My Plot",
    xaxis={'title':'GDP Per Cap', 'type':'log'},
    yaxis={'title':'Life Expectancy'},
)
fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:15:02