2009-09-09 60 views
2

雖然我可以使用通用繪圖命令關閉軸和 註釋並使用軸命令再次指定它們來更改註釋,例如,更改R中時間序列圖中的註釋

cars <- c(1, 3, 6, 4, 9) 

plot(cars, type="o", col="blue", ylim=range(0, cars), axes=FALSE, ann=FALSE) 
axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri")) 

我不能用時間序列對象來做例如,

www <- "http://www.massey.ac.nz/~pscowper/ts/Maine.dat" 
Maine.month <- read.table(www, header = TRUE) 
attach(Maine.month) 
Maine.month.ts <- ts(unemploy, start = c(1996, 1), freq = 12) 
Maine.98 <- window(Maine.month.ts, start = c(1998,1), end = c(1998,11)) 

我如何可以繪製Maine.98與註釋看起來像:

"Jan-98" "Feb-98" "Mar-98" "Apr-98" "May-98" etc? 

回答

4

你找到了ts型時間序列,適用於ARIMA建模和系列固定「三角洲T」如monhtly或季度系列。

但是R擅長處理日期。嘗試試驗將數據保存在data.frame中,但將x軸數據轉換爲DatePOSIXtplot()將調用一個知道時間的軸格式化函數,並獲得更好的默認值,您仍然可以覆蓋它。

更好的方法是使用包zooxts這給你額外的控制,以及花俏的:

> X <- data.frame(x=seq(Sys.Date()-11*31,Sys.Date(),by="1 months"), 
        y=cumsum(rnorm(12))) 
> plot(X)     # plot as a data.frame with Date column 
> library(zoo) 
> plot(zoo(X[,-1], X[,1])) # plot as a zoo object 
> library(xts) 
> plot(xts(X[,-1], X[,1])) # plot as an xts object 

編輯:我忘了,如果你的數據已經是一個ts對象,你有更容易的轉換器 as.zoo()as.xts()plot.zoo幫助頁面提供了自定義格式化時間軸的示例。

+0

謝謝。我不知道「seq」中的「by」接受「1個月」這樣的字符串。那在幫助中引用了哪些內容?除了幾個月,還可以使用其他什麼時間間隔? – 2010-01-20 13:32:30

+0

在這種情況下,'seq.Date'是'seq'在'Date'類對象上派發的。 – 2010-01-20 14:33:45

2

我想補充一下德克說:

一旦你使用正確的日期類型(日期或POSIXt),那麼你可以使用格式()命令來選擇你希望它在你看plot:

> format(seq(Sys.Date()-11*31,Sys.Date(),by="1 months"), "%b-%y") 
[1] "Oct-08" "Nov-08" "Dec-08" "Jan-09" "Feb-09" "Mar-09" "Apr-09" "May-09" 
[9] "Jun-09" "Jul-09" "Aug-09" "Sep-09" 

查看strptime的幫助以獲取更多格式化選項的示例。

?strptime