Pergunta

Embora eu possa alterar as anotações com o comando genérico da plotagem desligando eixos e anotações e especificando -os novamente usando o comando do eixo, por exemplo

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"))

Eu não posso fazer isso com o objeto de série temporal, por exemplo

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))

Como posso traçar Maine.98 com anotações parecendo:

"Jan-98"   "Feb-98"   "Mar-98"   "Apr-98"   "May-98"  etc?
Foi útil?

Solução

Você encontrou o ts Digite para séries temporais adequadas para modeling arima e série com 'Delta T' fixo, como Monhtly ou Series Quarterly.

Mas R é bom em trabalhar com datas em geral. Tente experimentar para manter seus dados em um data.frame, mas converta seus dados do eixo x em qualquer tipo Date ou POSIXt. o plot() Chamará uma função de formatação de eixo que conhece o tempo e você obtém melhores padrões que você ainda pode substituir.

Melhor ainda é o uso de pacotes jardim zoológico ou XTS que lhe dão controle adicional, bem como sinos e assobios:

 > 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

Editar: Eu esqueci que se seus dados já são um ts objeto, você tem conversores mais fáceisas.zoo() e as.xts(). E a plot.zoo A página de ajuda tem exemplos para formatação personalizada do eixo do tempo.

Outras dicas

Só para acrescentar o que Dirk disse:

Depois de usar um tipo de data apropriado (data ou Posixt), você pode usar o comando format () para escolher como deseja que ele pareça em seu gráfico:

> 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"

Veja a ajuda do STRPTIME para obter mais exemplos de opções de formatação.

?strptime
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top