R:我的数据集中 as.POSIXct 时区和 scale_x_datetime 问题
R: as.POSIXct timezone and scale_x_datetime issues in my dataset
我花了一些时间试图找出为什么在应用 scale_x_datetime 时小时刻度发生了变化。我试图在创建 Date/Time 列时提供时区。我使用了包装秤中的 ggplot 和 scale_x_datetime() 。小时刻度错误,哪个数据点与其 Date/Time 列中的时间不匹配。
这是处理我的数据集的一些程序。
DF$DateTime<-as.POSIXct(DF$timestamp,format="%m/%d/%y %H:%M", tz="America/Toronto")
DF$Date<-as.Date(DF$DateTime)
lims <- as.POSIXct(strptime(c("2015-07-21 00:00","2015-07-23 00:00"), format = "%Y-%m-%d %H:%M"), tz="America/Toronto")
ggplot(DF) + geom_line(aes(x=DateTime, y=-Diff,group=Date)) + scale_x_datetime(limits =lims, breaks=date_breaks("2 hour"), labels=date_format("%m/%d %H:%M"))
我错过了什么吗??请帮我弄清楚。
非常感谢!
函数 date_format()
采用 tz
参数,默认设置为 "UTC"
。因此,您的标签将转换为 UTC。要使用时区 "America/Toronto",您可以执行以下操作:
scale_x_datetime(limits = lims, breaks = date_breaks("2 hour"),
labels = date_format("%m/%d %H:%M", tz = "America/Toronto"))
此参数是在 0.2.5 版中引入的。使用 date_format()
在 UTC 以外的其他时区创建地块的代码必须在更新后更改。
ggplot 3+ 更新。 scale_x_datetime
允许您直接设置 x 轴时区(使用与旧答案中给出的语法略有不同的语法)。现在正确的代码是:
scale_x_datetime(limits = lims, breaks = date_breaks("2 hour"),
date_labels = "%m/%d %H:%M",
timezone = "America/Toronto")
我花了一些时间试图找出为什么在应用 scale_x_datetime 时小时刻度发生了变化。我试图在创建 Date/Time 列时提供时区。我使用了包装秤中的 ggplot 和 scale_x_datetime() 。小时刻度错误,哪个数据点与其 Date/Time 列中的时间不匹配。
这是处理我的数据集的一些程序。
DF$DateTime<-as.POSIXct(DF$timestamp,format="%m/%d/%y %H:%M", tz="America/Toronto")
DF$Date<-as.Date(DF$DateTime)
lims <- as.POSIXct(strptime(c("2015-07-21 00:00","2015-07-23 00:00"), format = "%Y-%m-%d %H:%M"), tz="America/Toronto")
ggplot(DF) + geom_line(aes(x=DateTime, y=-Diff,group=Date)) + scale_x_datetime(limits =lims, breaks=date_breaks("2 hour"), labels=date_format("%m/%d %H:%M"))
我错过了什么吗??请帮我弄清楚。 非常感谢!
函数 date_format()
采用 tz
参数,默认设置为 "UTC"
。因此,您的标签将转换为 UTC。要使用时区 "America/Toronto",您可以执行以下操作:
scale_x_datetime(limits = lims, breaks = date_breaks("2 hour"),
labels = date_format("%m/%d %H:%M", tz = "America/Toronto"))
此参数是在 0.2.5 版中引入的。使用 date_format()
在 UTC 以外的其他时区创建地块的代码必须在更新后更改。
ggplot 3+ 更新。 scale_x_datetime
允许您直接设置 x 轴时区(使用与旧答案中给出的语法略有不同的语法)。现在正确的代码是:
scale_x_datetime(limits = lims, breaks = date_breaks("2 hour"),
date_labels = "%m/%d %H:%M",
timezone = "America/Toronto")