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

Bokeh HoverTool工具提示日期显示为数字的问题求助

解决折线图提示框显示时间戳而非日期格式的问题

这个问题我之前也碰到过!其实核心原因是虽然你的Pandas DataFrame里ENTRYDATE已经是datetime类型了,但绘图库(大概率是Plotly吧?毕竟带提示框的折线图常用它)在渲染提示框时,默认读取了datetime类型底层对应的时间戳数值,而没有转换成人类友好的日期格式。下面分几种常见的绘图场景给你解决方案:

1. 如果你用的是Plotly Express

Plotly Express可以直接通过hover_data参数指定日期的显示格式,非常方便:

import plotly.express as px

# 假设你的DataFrame是df,y轴对应的数据列是'your_value_column'
fig = px.line(
    df,
    x='ENTRYDATE',
    y='your_value_column',
    # 用|分隔符指定日期格式,%Y-%m-%d对应年-月-日
    hover_data={'ENTRYDATE': '|%Y-%m-%d'}
)
fig.show()

你也可以根据需求调整格式字符串,比如%Y-%m-%d %H:%M:%S可以显示带时分秒的完整时间。

2. 如果你用的是Plotly Graph Objects

如果是手动构建Graph Objects图表,可以通过hovertemplate自定义提示框的内容和格式:

import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Scatter(
    x=df['ENTRYDATE'],
    y=df['your_value_column'],
    # 自定义提示框模板,%{x|%Y-%m-%d}指定日期格式,<extra></extra>去掉默认的系列名称
    hovertemplate='日期: %{x|%Y-%m-%d}<br>数值: %{y}<extra></extra>'
))
# 可选:设置统一的x轴 hover 模式
fig.update_layout(hovermode='x unified')
fig.show()

3. 如果你用的是Matplotlib(搭配mplcursors实现提示框)

如果是用Matplotlib结合mplcursors做提示框,需要在光标回调里手动格式化日期:

import matplotlib.pyplot as plt
import mplcursors

fig, ax = plt.subplots()
ax.plot(df['ENTRYDATE'], df['your_value_column'])

# 定义提示框内容的格式化函数
@mplcursors.cursor(hover=True).connect("add")
def on_add(sel):
    # 从DataFrame中取出对应索引的日期,转成指定格式
    date_str = df['ENTRYDATE'].iloc[sel.target.index].strftime('%Y-%m-%d')
    sel.annotation.set_text(f"日期: {date_str}\n数值: {sel.target[1]}")

plt.show()

最后再确认一下:先通过print(df['ENTRYDATE'].dtype)检查你的ENTRYDATE列确实是datetime64[ns]类型,如果不是的话,先重新转换一次:

df['ENTRYDATE'] = pd.to_datetime(df['ENTRYDATE'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:17:37