ggplot2中的日期刻度显示错误的标签

时间:2011-12-15 15:42:55

标签: r ggplot2

我正在使用ggplot2显示时间序列数据,但是刻度标签显示了一些奇怪的行为。可能我做错了但我在互联网上找不到任何帮助。这是一个例子:

#just sample data
time <- as.Date(seq(as.Date("2004/1/1"), as.Date("2009/12/1"), by = "1 month"))
data <- rnorm(nrow(test))+c(1:nrow(test))
test <- data.frame(time, data)

我的情节是:

q1 <- ggplot(data=test) + geom_line(aes(x=time, y=data))
q1 <- q1 + scale_x_date(major="years", minor="3 months", format="%Y-%m", lim=c(as.Date("2004/1/1"),as.Date("2009/12/1")), name="") 
q1

这会生成以下图表: example graph

但从我的理解,网格应该在2009/12/1结束 - 对吗?非常感谢你的帮助!

2 个答案:

答案 0 :(得分:8)

limits scale_x_date参数会影响绘制哪些数据点,但不会直接更改轴刻度标签和轴范围。帮助页面http://had.co.nz/ggplot2/scale_date.html(位于页面底部)中详细说明了此行为。

如果要消除数据左侧和右侧的空白区域,请使用coord_cartesian

library(ggplot2)

x <- as.Date(seq(as.Date("2004/1/1"), as.Date("2009/12/1"), by = "1 month"))
y <- rnorm(length(x))+c(1:length(x))
test <- data.frame(time=x, data=y)

q2 <- ggplot(data=test) + 
      geom_line(aes(x=time, y=data)) +
      scale_x_date(major="years", minor="3 months", format="%Y-%m", name="") +
      coord_cartesian(xlim=c(as.Date("2004/1/1"),as.Date("2009/12/1")))

png("date_ticks_plot.png", height=600, width=600)
print(q2)
dev.off()

enter image description here

答案 1 :(得分:2)

您的广告系列的确在2009/12/1结束,但您可能使用的是ggplot的旧版本,而upgrading可能会对x轴标签有所帮助。