gpt4 book ai didi

r - 消除格子xyplot中的时间戳时区偏移

转载 作者:行者123 更新时间:2023-12-05 07:50:50 24 4
gpt4 key购买 nike

当使用 lattice 绘制值与每小时时间戳的关系时,我发现图表的 x 轴标签中存在从 UTC 到本地时间的烦人时区偏移。虽然此示例使用了 lubridate,但直接使用 POSIXct 时会出现问题。例如:

library(lattice)
library(lubridate)
foo <- data.frame(t = seq(ymd_hms("2015-01-01 00:00:00"),
ymd_hms("2015-01-02 00:00:00"),
by = "hour"),
y = 1:25)
head(foo)
xyplot(y~t, foo) # time axis is behind by 5 hours (EST = UTC-5)

一种解决方案是明确指定时区:

tz(foo$t) <- ""  # or tz(foo$t) <- "EST"
head(foo)
xyplot(y~t, foo) # time axis now agrees

是否有其他方法可以让 lattice 在不修改数据时区的情况下直接在 UTC 中绘制?也许使用 scales = list(x = list(format = ...)) 参数?我可以想象更改数据时区会很糟糕的情况,特别是在处理夏令时事件时。

最佳答案

一种蛮力方法是用数据中的时区临时覆盖系统的时区,并在创建图后将其重置为之前的值:

tzn = Sys.getenv("TZ")
Sys.setenv(TZ = tz(foo$t))

xyplot(
y ~ t
, data = foo
)

Sys.setenv(TZ = tzn)

xyplot

关于r - 消除格子xyplot中的时间戳时区偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35780528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com