Bokeh HoverTool无法正确显示hh:mm:ss格式时间戳问题
解决HoverTool显示hh:mm:ss格式时间的问题
问题根因
你用hh:mm:ss格式的时间做图表时,Bokeh会把datetime类型的时间自动转成毫秒级时间戳(从1970年1月1日零点开始算的毫秒数),HoverTool默认直接输出这个大数值,所以就出现了5.8373e7这种科学计数法的显示。
两种可行解决方案
方案1:给HoverTool加时间格式化规则
如果你的时间已经转成了datetime类型,直接在HoverTool里指定时间格式就能解决:
- 先确保时间列是datetime类型(如果是字符串,先转换):
import pandas as pd df = pd.read_csv("Dummy.csv") # 把字符串时间转成datetime类型 df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S')
- 配置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:
- 读取数据时不处理时间列:
df = pd.read_csv("Dummy.csv") # 保留time列的原始字符串格式
- 配置HoverTool时直接调用这个字符串字段:
hover = HoverTool( tooltips=[ ("时间", "@time"), ("对应数值", "@value") ] ) p.add_tools(hover)
额外提示
如果你的时间是带日期的完整datetime,只需要把格式化字符串改成{%Y-%m-%d %H:%M:%S}就能显示日期加时间。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

