Kuo*_*ang 12 r ggplot2 posixct
我花了一些时间试图弄清楚当应用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"))
Run Code Online (Sandbox Code Playgroud)
我在这里错过了吗?请帮我搞清楚.非常感谢!
Sti*_*ibu 12
该函数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"))
Run Code Online (Sandbox Code Playgroud)
这个论点是在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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3634 次 |
| 最近记录: |