我正在使用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
这会生成以下图表:
但从我的理解,网格应该在2009/12/1结束 - 对吗?非常感谢你的帮助!
答案 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()
答案 1 :(得分:2)
您的广告系列的确在2009/12/1结束,但您可能使用的是ggplot
的旧版本,而upgrading可能会对x轴标签有所帮助。