The zoo
package provides support for time series with flexible time indexes, e.g., including Date
. The package also brings a fortify()
method that can be leveraged for ggplot2
graphics. A convenience method for autoplot()
is also provided, see ?autoplot.zoo
for a selection of worked examples with different layouts.
For an example with 18 time series with Date
index in a 3 x 6 layout, I use a subset of the data set FXRatesCHF
from package fxregime
. This provides exchange rates for different currencies with respect to the Swiss Franc (CHF).
library("zoo")
data("FXRatesCHF", package = "fxregime")
FX <- window(FXRatesCHF[, c(1:4, 6:19)], start = as.Date("2000-01-01"))
Then ggplot()
can be applied to the output of the fortify()
method:
library("ggplot2")
ggplot(aes(x = Index, y = Value), data = fortify(FX, melt = TRUE)) +
geom_line(color = "darkred") +
xlab("Time") + ylab("FX") +
theme_bw() +
facet_wrap(~ Series, scales = "free_y", ncol = 6)

The same kind of layout can also be easily created with base graphics. Only the panel titles are on the y-axis rather than in a gray-shaded main title:
plot(FX, col = "darkred", xlab = "Time", nc = 6,
panel = function(...) { grid(col = "lightgray"); lines(...) })

Finally, a lattice
version can be created by
library("lattice")
trellis.par.set(theme = standard.theme(color = FALSE))
xyplot(FX, col = "darkred", xlab = "Time", layout = c(6, 3),
panel = function(...) { panel.grid(col = "lightgray"); panel.lines(...) })
