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

如何在基于DataFrame两列的折线图hover时显示第三列文本?

实现折线图Hover时显示第三列内容

这里提供两种可行方案,分别适合不同的场景:

方案一:用Plotly快速实现(推荐)

Plotly 对交互式图表的支持非常友好,只需几行代码就能配置Hover时显示自定义内容:

import pandas as pd
from datetime import datetime
import random
import plotly.express as px

# 生成你的数据
datelist = pd.date_range(datetime.today(), periods=5).tolist()
prices = [random.randint(50, 60) for _ in range(5)]
text = ['AAA','BBB','CCC','DDD','EEE']
df = pd.DataFrame({'dates': datelist, 'price': prices, 'text': text})

# 绘制折线图,指定hover要显示的额外数据
fig = px.line(df, x='dates', y='price', hover_data=['text'])

# 自定义hover显示模板(可选,让格式更清晰)
fig.update_traces(
    hovertemplate='日期: %{x}<br>价格: %{y}<br>文本: %{customdata[0]}'
)

fig.show()

运行后生成的图表,鼠标悬停在任意数据点上时,会自动显示对应的text列内容。

方案二:用Matplotlib + mplcursors实现

如果更习惯用Matplotlib,可以借助mplcursors库添加自定义Hover提示。首先安装依赖:

pip install mplcursors

然后编写代码:

import pandas as pd
from datetime import datetime
import random
import matplotlib.pyplot as plt
import mplcursors

# 生成数据
datelist = pd.date_range(datetime.today(), periods=5).tolist()
prices = [random.randint(50, 60) for _ in range(5)]
text = ['AAA','BBB','CCC','DDD','EEE']
df = pd.DataFrame({'dates': datelist, 'price': prices, 'text': text})

# 创建折线图
fig, ax = plt.subplots()
line, = ax.plot(df['dates'], df['price'], marker='o', linestyle='-')

# 优化日期轴显示
fig.autofmt_xdate()

# 配置Hover提示逻辑
cursor = mplcursors.cursor(line, hover=True)
@cursor.connect("add")
def on_hover(sel):
    # 获取当前点对应的行索引
    idx = sel.target.index
    # 设置提示框内容
    sel.annotation.set_text(
        f"日期: {df['dates'][idx].strftime('%Y-%m-%d %H:%M:%S')}\n"
        f"价格: {df['price'][idx]}\n"
        f"文本: {df['text'][idx]}"
    )

plt.show()

这样鼠标悬停在数据点上时,就会弹出包含text列内容的提示框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:45:27