问题 R:我的数据集中的as.POSIXct时区和scale_x_datetime问题


我花了一些时间试图弄清楚当应用scale_x_datetime时为什么小时刻度被移动了。我已经尝试在创建日期/时间列时给出时区。我从包规模中使用了ggplot和scale_x_datetime()。小时滴答是错误的,哪个数据点与其日期/时间列中的时间不匹配。

以下是处理我的数据集的一些过程。

  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"))

我在这里错过了吗?请帮我解决一下。 非常感谢!


1538
2018-03-25 19:59


起源



答案:


功能 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。


11
2018-03-25 20:17



我需要在data_format中指定tz。你的帖子中有一种类型。它应该是这样的:labels = date_format(“%m /%d%H:%M”,tz =“America / Toronto”) - Kuo-Hsien Chang
@ Kuo-HsienChang你是对的,我纠正了这个错误。对于那个很抱歉! - Stibu


答案:


功能 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。


11
2018-03-25 20:17



我需要在data_format中指定tz。你的帖子中有一种类型。它应该是这样的:labels = date_format(“%m /%d%H:%M”,tz =“America / Toronto”) - Kuo-Hsien Chang
@ Kuo-HsienChang你是对的,我纠正了这个错误。对于那个很抱歉! - Stibu