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

Plots.jl中设置DateTime类型xlims后显示异常求助

解决Plots.jl中DateTime轴显示错误年份的问题

问题原因

你遇到的3993年日期显示问题,本质是Plots.jl默认将xlims传入的DateTime对象解析为Unix时间戳(从1970-01-01开始的秒数),但Julia的DateTime类型底层数值是以0000-01-01T00:00:00为基准的毫秒数,两者epoch基准完全不同,导致数值被错误转换为极远的未来日期。

解决方案

以下是几种可靠的修复方式:

1. 用Dates.value()转换DateTime为底层数值

将x轴范围的DateTime对象转换为Plots能正确识别的底层数值,同时保留ticks=:native让Plots自动处理日期刻度:

using Plots, Dates
plot(df.datetime, pwr, 
     xlims=(Dates.value(df.datetime[1]), Dates.value(df.datetime[end])),
     ticks=:native
)

2. 自定义日期刻度与格式

显式指定刻度间隔和格式化规则,确保Plots明确识别x轴为时间类型:

using Plots, Dates
# 按天设置刻度,格式化为"年-月-日 时:分"
plot(df.datetime, pwr, 
     xlims=(df.datetime[1], df.datetime[end]),
     xticks=Dates.Hour(24),  # 每隔24小时(1天)显示一个刻度
     xformatter=dt -> Dates.format(dt, "yyyy-mm-dd HH:MM")  # 自定义日期显示格式
)

你可以根据数据密度调整xticks间隔,比如Dates.Hour(6)表示每6小时一个刻度。

3. 检查后端兼容性

如果使用GR后端(Plots默认后端),确保Plots.jl和GR版本为最新,旧版本可能存在DateTime轴解析bug。更新命令:

using Pkg
Pkg.update(["Plots", "GR"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:47:04