Time series plotting methods
This function handles time series plotting, including cut-and-stack plots. Examples are given of superposing, juxtaposing and styling different time series.
## S3 method for class 'ts': xyplot(x, data = NULL, screens = if (superpose) 1 else colnames(x), ..., superpose = FALSE, cut = FALSE, type = "l", col = if (!superpose) plot.line$col, lty = if (!superpose) plot.line$lty, lwd = if (!superpose) plot.line$lwd, pch = if (!superpose) plot.symbol$pch, auto.key = superpose, par.settings = list(), layout = NULL, as.table = TRUE, xlab = "Time", ylab = NULL, default.scales = list(y = list(relation = if (missing(cut)) "free" else "same")))
- an object of class
ts, which may be multi-variate, i.e. have a matrix structure with multiple columns.
- not used, and must be left as
- additional arguments passed to
xyplot, which may pass them on to
- factor (or coerced to factor) whose levels specify which
panel each series is to be plotted in.
screens = c(1, 2, 1)would plot series 1, 2 and 3 in panels 1, 2 and 1. May also be a named list, see Details below.
- overlays all series in one panel (via
screens = 1) and uses grouped style settings (from
trellis.par.get("superpose.line"), etc). Note that this is just a convenience argument: its only action is to change the def
- defines a cut-and-stack plot.
cutcan be a
listof arguments to the function
number(number of intervals to divide into) and
- type, col, lty, lwd, pch
- graphical arguments, which are processed and eventually passed to
panel.xyplot. These arguments can also be vectors or (named) lists, see Details for more information.
- a logical, or a list describing how to draw a key. See the
xyplot. The default here is to draw lines, not points, and any specified style arguments should show up a
- style settings beyond the standard
- numeric vector of length 2 specifying number of columns and rows in the plot. The default is to fill columns with up to 6 rows.
- to draw panels from top to bottom. The order is determined by the
order of columns in
- xlab, ylab
- X axis and Y axis labels; see
xyplot. Note in particular that
ylabmay be a character vector, in which case the labels are spaced out equally, to correspond to the panels.
scalesspecification. The default is set to have
"free"Y axis scales unless
cutis given. Note, users should pass the
scalesargument rather than
The handling of several graphical parameters is more
flexible for multivariate series. These parameters can be
vectors of the same length as the number of series plotted or
are recycled if shorter. They can also be (partially) named list, e.g.,
list(A = c(1,2), c(3,4)) in which
c(3, 4) is the
default value and
c(1, 2) the value only for series
screens argument can be specified in a similar way.
Some examples are given below.
Sarkar, Deepayan (2008)
xyplot(ts(c(1:10,10:1))) ### Figure 14.1 from Sarkar (2008) xyplot(sunspot.year, aspect = "xy", strip = FALSE, strip.left = TRUE, cut = list(number = 4, overlap = 0.05)) ### A multivariate example; first juxtaposed, then superposed xyplot(EuStockMarkets, scales = list(y = "same")) xyplot(EuStockMarkets, superpose = TRUE, aspect = "xy", lwd = 2, type = c("l","g"), ylim = c(0, max(EuStockMarkets))) ### Examples using screens (these two are identical) xyplot(EuStockMarkets, screens = c(rep("Continental", 3), "UK")) xyplot(EuStockMarkets, screens = list(FTSE = "UK", "Continental")) ### Automatic group styles xyplot(EuStockMarkets, screens = list(FTSE = "UK", "Continental"), superpose = TRUE) xyplot(EuStockMarkets, screens = list(FTSE = "UK", "Continental"), superpose = TRUE, xlim = extendrange(1996:1998), par.settings = standard.theme(color = FALSE)) ### Specifying styles for series by name xyplot(EuStockMarkets, screens = list(FTSE = "UK", "Continental"), col = list(DAX = "red", FTSE = "blue", "black"), auto.key = TRUE) xyplot(EuStockMarkets, screens = list(FTSE = "UK", "Continental"), col = list(DAX = "red"), lty = list(SMI = 2), lwd = 1:2, auto.key = TRUE) ### Example with simpler data, few data points set.seed(1) z <- ts(cbind(a = 1:5, b = 11:15, c = 21:25) + rnorm(5)) xyplot(z, screens = 1) xyplot(z, screens = list(a = "primary (a)", "other (b & c)"), type = list(a = c("p", "h"), b = c("p", "s"), "o"), pch = list(a = 2, c = 3), auto.key = list(type = "o"))