ggplot2中scale_x_datetime的意外行为

时间:2011-12-07 00:09:21

标签: r ggplot2

我有以下数据集,每日收集数据。

R> toydata
                 date group coef
1 2011-11-04 23:59:59     1 2.32
2 2011-11-05 23:59:59     1 2.34
3 2011-11-06 23:59:59     1 2.46
4 2011-11-07 23:59:59     1 2.68
5 2011-11-04 23:59:59     2 2.17
6 2011-11-05 23:59:59     2 1.90
7 2011-11-06 23:59:59     2 2.13
8 2011-11-07 23:59:59     2 2.52

Everythings似乎工作得很好:

R> toydata$date
[1] "2011-11-04 23:59:59 EST" "2011-11-05 23:59:59 EST"
[3] "2011-11-06 23:59:59 EST" "2011-11-07 23:59:59 EST"
[5] "2011-11-04 23:59:59 EST" "2011-11-05 23:59:59 EST"
[7] "2011-11-06 23:59:59 EST" "2011-11-07 23:59:59 EST"

R> format(toydata$date, "%d-%b")
[1] "04-Nov" "05-Nov" "06-Nov" "07-Nov" "04-Nov" "05-Nov" "06-Nov" "07-Nov"

然而,当我尝试使用ggplot2使用以下代码

绘制它时
R> p <- ggplot(toydata, aes(x = date, y = coef, group = group))
R> pq <- p + geom_line(aes(colour = group)) +
+   scale_x_datetime(major = "1 day", format = "%d-%b")

我得到了意想不到的结果:

enter image description here

如您所见,11月6日重复。我可以通过将x中的标签视为字符串而不是日期来解决这个问题,但我很好奇为什么会发生这种情况。我错过了一些明显的东西吗

1 个答案:

答案 0 :(得分:5)

只需指定tz='EST'即可。无论默认是什么,因为夏令时转换,重复11月6日。