2011-12-15 68 views
5

我顯示的時間序列數據爲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日 - 對嗎?非常感謝你的幫助!

+0

什麼問題?該行確實結束2009年12月 – hadley 2011-12-16 12:40:49

+0

哈德利是你完全正確 - 我的意思是*網格*和bdemarest是完全正確的,他的答案 - 我只是沒有意識到。對不起 – Seb 2011-12-16 13:05:08

回答

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

2

您的線路確實在2009/12/1結束,但可能您使用的是舊版本的ggplot,而upgrading可能會幫助x軸標籤。