# [R] Adding a polygon to a time series plot

Liaw, Andy andy_liaw at merck.com
Fri Dec 10 20:49:16 CET 2004

```> From: Andy Bunn
>
> 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
> from a smooth.spline interpolation and other annotation to

Please note: smooth.spline() is for _smoothing_.  If you really want
interpolation, you should use spline() or splinefun().

> 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
> axis
> # End code that won't parse

AFAICS, the plot will have the x-axis range equal to the time you specified,
so replace 1 with start(dat.ts) and n with end(dat.ts) ought to work, no?

HTH,
Andy

> 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
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help