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

如何让Plotly折线图悬浮注释显示另一DataFrame的对应值

解决Plotly绘制Pandas折线图时悬浮注释显示对应DataFrame单个值的问题

问题出在hover_data=df2.values的用法上:Pandas的Plotly后端会把传入的二维数组整列绑定到每个trace的hover数据中,导致悬浮时显示整列而非对应位置的单个值。以下是两种可行的解决方法:

方法1:用Plotly Express合并数据后绘制

将两个DataFrame转成长格式并合并,让每个点都关联对应位置的df2值,再用px.line绘制:

import pandas as pd
import numpy as np
import plotly.express as px

vals=[[1,2,3],
      [4,5,6],
      [7,8,9]]
df = pd.DataFrame(np.random.rand(3,3), columns=['option0', 'option1', 'option2'])
df2 = pd.DataFrame(vals, columns=['option0', 'option1', 'option2'])

# 转换为长格式,保留行索引作为时间维度
df_long = df.reset_index().melt(id_vars='index', var_name='option', value_name='money')
df2_long = df2.reset_index().melt(id_vars='index', var_name='option', value_name='extra_val')

# 合并两个数据集,匹配时间和选项
merged_df = pd.merge(df_long, df2_long, on=['index', 'option'])

# 绘制折线图,指定hover显示额外值
fig = px.line(merged_df, x='index', y='money', color='option',
              title="Pandas Backend Example", template="simple_white",
              labels={'index': 'time'},
              hover_data={'extra_val': True, 'money': ':.4f', 'time': True})

fig.show()

方法2:修改Pandas Plotly后端生成的图表trace

如果坚持使用df.plot(),可以在生成图表后遍历每个trace,手动设置对应位置的hover文本:

import pandas as pd
import numpy as np
pd.options.plotting.backend = "plotly"

vals=[[1,2,3],
      [4,5,6],
      [7,8,9]]
df = pd.DataFrame(np.random.rand(3,3))
df2 = pd.DataFrame(vals)

# 生成基础折线图
fig = df.plot(title="Pandas Backend Example", template="simple_white",
              labels=dict(index="time", value="money", variable="option"))

# 遍历每个trace,绑定df2对应列的单个值到hover文本
for idx, trace in enumerate(fig.data):
    # 获取df2中当前trace对应的列数据
    extra_vals = df2.iloc[:, idx].tolist()
    # 设置hovertext为对应值,并重写hover模板
    trace.hovertext = extra_vals
    trace.hovertemplate = (
        "time: %{x}<br>"
        "money: %{y:.4f}<br>"
        "extra_val: %{hovertext}<br>"
        "<extra></extra>"
    )

fig.show()

两种方法都能实现:悬浮第一条线的第一个点时显示df2(0,0)的值,第二条线第一个点显示df2(0,1)的值,以此类推。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:35:59