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

Bokeh X轴日期返回错误问题咨询:字符串日期转换异常

问题原因及解决方案

1. X轴日期显示为1970年的核心原因

这是典型的日期格式不匹配导致的纪元时间解析错误。Bokeh的日期轴需要明确的日期/时间类型数据(比如Python的datetime.datetime、pandas.Timestamp),如果你的DataFrame里的日期是字符串格式(比如"2018-02-06"),Bokeh不会自动识别为日期类型,反而会把字符串当成普通数值处理——当它尝试把这些字符串转换成日期戳时,因为无法正确解析,就会默认回退到Unix纪元(1970年1月1日)作为基准,计算出错误的偏移值,最终出现你看到的1970年日期。

举个反例,直接用字符串列作为X轴的错误写法:

from bokeh.plotting import figure, show
import pandas as pd

df2 = pd.DataFrame({"date": ["2018-02-05", "2018-02-06"], "value": [10, 20]})
p = figure(x_axis_type="datetime")
p.circle(x=df2["date"], y=df2["value"])  # 直接传字符串列会触发解析错误
show(p)

2. 图形标记未对齐网格线的原因

这个问题和日期类型错误直接相关:当X轴数据是未正确转换的字符串时,Bokeh会把它们当成连续数值排布,而非离散的日期刻度,所以标记点位置会和日期网格线错位。另外,如果日期转换后存在时区问题,或者未设置正确的轴刻度格式,也可能导致对齐偏差。

快速修复步骤

  • 第一步:转换日期列类型
    先把DataFrame里的字符串日期转换成pandas的Timestamp类型(Bokeh能完美识别):

    df2["date"] = pd.to_datetime(df2["date"])
    

    转换后可以检查列类型:print(df2["date"].dtype),正常会显示datetime64[ns]。

  • 第二步:确保X轴类型设置正确
    创建figure时明确指定x_axis_type="datetime",让Bokeh自动生成日期刻度:

    p = figure(x_axis_type="datetime", x_axis_label="日期", y_axis_label="数值")
    
  • 第三步:自定义刻度格式(可选)
    如果需要调整日期显示样式(比如只显示月日),可以用DatetimeTickFormatter:

    from bokeh.models import DatetimeTickFormatter
    
    p.xaxis.formatter = DatetimeTickFormatter(
        days=["%Y-%m-%d"],
        months=["%Y-%m-%d"],
        years=["%Y-%m-%d"]
    )
    

验证修复后的完整代码

from bokeh.plotting import figure, show
import pandas as pd
from bokeh.models import DatetimeTickFormatter

# 构造测试数据
df2 = pd.DataFrame({"date": ["2018-02-05", "2018-02-06"], "value": [10, 20]})
# 转换日期类型
df2["date"] = pd.to_datetime(df2["date"])

# 创建绘图对象
p = figure(x_axis_type="datetime", width=800, height=400, title="日期-数值图")
# 绘制标记点
p.circle(x=df2["date"], y=df2["value"], size=10, color="blue")
# 设置日期刻度格式
p.xaxis.formatter = DatetimeTickFormatter(days=["%Y-%m-%d"])
# 优化网格线显示
p.grid.grid_line_alpha = 0.3

show(p)

运行这段代码后,X轴会正确显示2018年的日期,标记点也会对齐网格线。


内容的提问来源于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 04:32:38