Question

Je l'ensemble de données suivant

1890 mar 0.4
1890 apr 0.8
1890 may 1.0
...
1989 jan 0.2
1989 feb 0.4
1989 mar 0.5

Comment puis-je faire un tracé de ligne dans R avec sur l'axe des x l'année, affichés tous les 5 ans?

Mon problème est pas tant fait l'intrigue, mais obtenir pour afficher uniquement les années que je veux, et placez-les au début de cette année. Donc, je ne veux pas une tique sur Avril mais en Janvier.

Était-ce utile?

La solution

Cela devrait vous aider à démarrer:

# create some data
set.seed(1)
tmp <- seq(as.POSIXct("1890-03-01", tz="GMT"),
           as.POSIXct("1920-03-01", tz="GMT"),
           by="month")
df <- data.frame(date=tmp,
                 val=rnorm(length(tmp)))

# plot data
plot(df$date, df$val, xaxt="n")
tickpos <- seq(as.POSIXct("1890-01-01", tz="GMT"),
               as.POSIXct("1920-01-01", tz="GMT"),
               by="5 years")
axis.POSIXct(side=1, at=tickpos)

Autres conseils

Vous obtenez ce que rcs (correctement!) Proposé par défaut en utilisant zoo comme parcelle avec des lignes et le même axe:

R> library(zoo)
R> zdf <- zoo(df$val, order.by=df$date)
R> plot(zdf)
R> 

Les exemples montrent help(plot.zoo) à faire l'indexation date colombophile, essentiellement ce que vous rcs montré mais avec une mise en forme supplémentaire via, par exemple,

R> fmt <- "%Y-%m"  ## year-mon
R> txt <- format(index(zdf), fmt)
R> plot(zdf, xaxt='n')
R> axis(side=1, at=index(zdf), lab=txt)
R> 

Si vous sous-ensemble at et lab vous obtenez moins de tiques aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top