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
相关产品推荐
相关产品推荐

