我对scale_x_datetime
...
plt = ggplot() + geom_line(data=d, aes(Time, d[, 2]), color=col) +
scale_x_datetime(breaks = seq(d[1,1],d[dim(d)[1],1],interval*60))
在指定的时间间隔内在地块上生成正确的时间戳...但是,如果我添加date_labels = "%m-%d %H:%M"
来格式化时间戳在地块上打印的方式,则突然小时值关闭5小时...
以下代码在图上产生错误的小时值
plt = ggplot() + geom_line(data=d, aes(Time, d[, 2]), color=col) +
scale_x_datetime(date_labels = "%m-%d %H:%M",
breaks = seq(d[1,1],d[dim(d)[1],1],interval*60))
为了再现性......
d = data.frame(Time = as.POSIXct(seq(1446871740, 1446893340, 60), origin = "1970-01-01"),
Value = rnorm(361))
interval = floor(as.numeric(difftime(d[dim(d)[1],1], d[1,1], units="mins")) / 3)
col = "red"
答案 0 :(得分:1)
这是一个时区问题。在 ggplot2_2.2.0 之前的ggplot2版本中,您需要在scale_x_datetime
中设置标签时设置时区。
scale_x_datetime(labels = scales::date_format("%m-%d %H:%M", tz = "America/Los_Angeles")
这不再是 ggplot2_2.2.0 的问题。来自news:
scale _ * _ datetime()现在支持时区。它将使用时区 默认情况下附加到变量,但可以用 时区论证。
将ggplot2更新为当前版本将解决第二个绘图的时移问题。如果您想设置不同的时区,timezone
现在有一个scale_*_datetime
参数。