2

虽然我可以使用通用绘图命令更改注释,但关闭轴和注释并使用轴命令再次指定它们,例如

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

2 回答 2

4

您找到了ts适合 ARIMA 建模的时间序列类型和具有固定“delta t”的序列,例如每月或每季度的序列。

但是 R 通常擅长处理日期。尝试将您的数据保存在 a 中data.frame,但将您的 x 轴数据转换为 typeDatePOSIXt. 将plot()调用一个知道时间的轴格式化函数,并且您可以获得更好的默认值,您仍然可以覆盖这些默认值。

更好的是使用包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帮助页面包含时间轴自定义格式的示例。

于 2009-09-09T12:18:43.960 回答
2

只是补充一下德克所说的:

一旦您使用了正确的日期类型(Date 或 POSIXt),您就可以使用 format() 命令来选择您希望它在绘图中的显示方式:

> 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
于 2009-09-09T13:25:28.550 回答