[R] Adding a polygon to a time series plot

Andy Bunn abunn at whrc.org
Fri Dec 10 20:01:20 CET 2004


Preamble: Sorry for being dense.

Now that that's done, here are my questions.

I want to put a polygon on a plot of a time series. I'm going to add lines
from a smooth.spline interpolation and other annotation to it. But here's
the general idea:

# Start code
     n <- 121
     dat <- rnorm(n)
     plot(dat, type="n")
     polygon(c(1:n,n:1), c(dat,c(rep(0,n))), col = "gray80", border = NA)
# End code

What if dat is a time series?

# Start code that won't parse.
     dat.ts <- ts(rnorm(n), start = 1980, frequency = 12)
     plot(dat.ts, type="n")
     polygon(...) # How do I specify x and y for the time series?
                  # Is it easier to skip the time series and add time as an
axis
# End code that won't parse

Here's a work around that is cumbersome.

# Start code
     dat.ts <- ts(rnorm(n), start = 1980, frequency = 12)
     dat <- as.vector(dat.ts)
     plot(1:n, dat, type="n", xaxt = "n", axes = FALSE, xlab = "", ylab =
"")
     polygon(c(1:n,n:1), c(dat,c(rep(0,n))), col = "gray80", border = NA)
     axis(1, at = seq(1, n, by = 12), labels = c(1980:1990))
# End code

Can I use polygon with a time series object? Or is it too awkward?

Thanks, Andy




More information about the R-help mailing list