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
相关产品推荐
相关产品推荐

