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

Bokeh HoverTool无法正确显示hh:mm:ss格式时间戳问题

解决HoverTool显示hh:mm:ss格式时间的问题

问题根因

你用hh:mm:ss格式的时间做图表时,Bokeh会把datetime类型的时间自动转成毫秒级时间戳(从1970年1月1日零点开始算的毫秒数),HoverTool默认直接输出这个大数值,所以就出现了5.8373e7这种科学计数法的显示。

两种可行解决方案

方案1:给HoverTool加时间格式化规则

如果你的时间已经转成了datetime类型,直接在HoverTool里指定时间格式就能解决:

  1. 先确保时间列是datetime类型(如果是字符串,先转换):
import pandas as pd
df = pd.read_csv("Dummy.csv")
# 把字符串时间转成datetime类型
df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S')
  1. 配置HoverTool时,用datetime格式化器指定hh:mm:ss格式:
from bokeh.models import HoverTool

hover = HoverTool(
    tooltips=[
        ("时间", "@time{%H:%M:%S}"),
        ("对应数值", "@value")  # 替换成你的数据列名
    ],
    formatters={
        '@time': 'datetime'  # 告诉Bokeh这是时间类型,要格式化
    }
)
# 记得把hover工具添加到你的图表里
p.add_tools(hover)

方案2:直接用原始时间字符串

如果不需要对时间做计算,完全可以保留原始的hh:mm:ss字符串,不用转成datetime:

  1. 读取数据时不处理时间列:
df = pd.read_csv("Dummy.csv")
# 保留time列的原始字符串格式
  1. 配置HoverTool时直接调用这个字符串字段:
hover = HoverTool(
    tooltips=[
        ("时间", "@time"),
        ("对应数值", "@value")
    ]
)
p.add_tools(hover)

额外提示

如果你的时间是带日期的完整datetime,只需要把格式化字符串改成{%Y-%m-%d %H:%M:%S}就能显示日期加时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:20:01