Learn R Programming

zoo (version 1.7-13)

ggplot2.zoo: Convenience Functions for Plotting zoo Objects with ggplot2

Description

fortify.zoo takes a zoo object and converts it into a data frame (intended for ggplot2). autoplot.zoo takes a zoo object and returns a ggplot2 object. It essentially uses the mapping aes(x = Time, y = Value, group = Series) and adds colour = Series, linetype = Series, shape = Series in the case of a multivariate series with facets = NULL.

Usage

"autoplot"(object, geom = "line", facets, ...) "fortify"(model, data, melt = FALSE, ...) facet_free(facets = Series ~ ., margins = FALSE, scales = "free_y", ...)
yearmon_trans(format = "%b %Y", n = 5) scale_x_yearmon(..., format = "%b %Y", n = 5) scale_y_yearmon(..., format = "%b %Y", n = 5)
yearqtr_trans(format = "%Y-%q", n = 5) scale_x_yearqtr(..., format = "%Y-%q", n = 5) scale_y_yearqtr(..., format = "%Y-%q", n = 5)

Arguments

object
an object of class "zoo".
geom
character specifying which geom to use in qplot.
facets
specification of facets for qplot. The default in the autoplot method is to use facets = NULL for univariate series and facets = Series ~ . for multivariate series.
...
further arguments passed to qplot for autoplot (and not used for fortify).
model
an object of class "zoo" to be converted to a "data.frame".
data
not used (required by generic fortify method).
melt
Should the resulting data frame be in long format (melt = TRUE) or wide format (melt = FALSE).
margins
As in facet_grid.
scales
As in facet_grid except it defaults to "free_y".
format
A format acceptable to format.yearmon or format.yearqtr.
n
Approximate number of axis ticks.

Value

fortify.zoo returns a data.frame either in long format (melt = TRUE) or in wide format (melt = FALSE). The long format has three columns: the time Index, a factor indicating the Series, and the corresponding Value. The wide format simply has the time Index plus all columns of coredata(model).autoplot.zoo returns a ggplot object.

Details

Convenience interface for visualizing zoo objects with ggplot2. autoplot.zoo uses fortify.zoo (with melt = TRUE) to convert the zoo object into a data frame and then uses a suitable aes() mapping to visiualize the series.

See Also

autoplot, fortify, qplot

Examples

Run this code
if(require("ggplot2") && require("scales")) {
## example data
x.Date <- as.Date(paste(2003, 02, c(1, 3, 7, 9, 14), sep = "-"))
x <- zoo(rnorm(5), x.Date)
xlow <- x - runif(5)
xhigh <- x + runif(5)
z <- cbind(x, xlow, xhigh)

## univariate plotting
autoplot(x)
## by hand
ggplot(aes(x = Index, y = Value), data = fortify(x, melt = TRUE)) +
  geom_line() + xlab("Index") + ylab("x")
## adding series one at a time
last_plot() + geom_line(aes(x = Index, y = xlow), colour = "red", data = fortify(xlow))
## add ribbon for high/low band
ggplot(aes(x = Index, y = x, ymin = xlow, ymax = xhigh), data = fortify(x)) +
  geom_ribbon(fill = "darkgray") + geom_line()

## multivariate plotting in multiple or single panels
autoplot(z)                      ## multiple without color/linetype
autoplot(z, facets = Series ~ .) ## multiple with series-dependent color/linetype
autoplot(z, facets = NULL)       ## single with series-dependent color/linetype
## by hand with color/linetype and with/without facets
qplot(x = Index, y = Value, group = Series, colour = Series,
  linetype = Series, facets = Series ~ ., data = fortify(z, melt = TRUE)) +
  geom_line() + xlab("Index") + ylab("")
ggplot(aes(x = Index, y = Value, group = Series, colour = Series, linetype = Series),
  data = fortify(z, melt = TRUE)) + geom_line() + xlab("Index") + ylab("")
## variations
autoplot(z, geom = "point")
autoplot(z, facets = NULL) + geom_point()
autoplot(z, facets = NULL) + scale_colour_grey() + theme_bw()

## for "ts" series via coercion
autoplot(as.zoo(EuStockMarkets))
autoplot(as.zoo(EuStockMarkets), facets = NULL)

autoplot(z) + 
	aes(colour = NULL, linetype = NULL) +
	facet_grid(Series ~ ., scales = "free_y")

autoplot(z) + aes(colour = NULL, linetype = NULL) + facet_free() # same

z.yq <- zooreg(rnorm(50), as.yearqtr("2000-1"), freq = 4)
autoplot(z.yq) + scale_x_yearqtr()

## mimic matplot
data <- cbind(A = c(6, 1, NA, NA), B = c(16, 4, 1, NA), C = c(25, 7, 2, 1))
autoplot(zoo(data), facet = NULL) + geom_point()
## with different line types
autoplot(zoo(data), facet = NULL) + geom_point() + aes(linetype = Series)
}

Run the code above in your browser using DataLab