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

Seb*_*Seb 5 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)
Run Code Online (Sandbox Code Playgroud)

我用:

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
Run Code Online (Sandbox Code Playgroud)

这会产生以下图表: 示例图

但根据我的理解,电网应该在2009/12/1结束 - 对吧?非常感谢你的帮助!

bde*_*est 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述