| doubleYScale {latticeExtra} | R Documentation |
Draw two plot series with different y scales
Description
Overplot two trellis objects with different y scales, optionally in different styles, adding a second y axis, and/or a second y axis label.
Note: drawing plots with multiple scales is often a bad idea as it can be misleading.
Usage
doubleYScale(obj1, obj2, use.style = TRUE,
style1 = if (use.style) 1, style2 = if (use.style) 2,
add.axis = TRUE, add.ylab2 = FALSE,
text = NULL, auto.key = if (!is.null(text))
list(text, points = points, lines = lines, ...),
points = FALSE, lines = TRUE, ..., under = FALSE)
Arguments
obj1, obj2 |
trellis objects. Note that most settings, like main/sub/legend/etc
are taken only from |
use.style, style1, style2 |
|
add.axis |
if TRUE, draw a second y axis (for the |
add.ylab2 |
if TRUE, draw a second y axis label (from |
text, auto.key, points, lines, ... |
if non-NULL, add a |
under |
if TRUE, draw |
Details
Panels from the trellis object obj2 will be drawn in the
corresponding panel of obj1.
Axis settings are taken from the trellis objects, so most
scales arguments such as draw, at, labels
etc from obj2 will carry over to the second y axis.
Value
a merged trellis object.
Author(s)
Felix Andrews felix@nfrac.org
See Also
Examples
set.seed(1)
foo <- list(x = 1:100, y = cumsum(rnorm(100)))
## show original data
xyplot(y + y^2 ~ x, foo, type = "l")
## construct separate plots for each series
obj1 <- xyplot(y ~ x, foo, type = "l")
obj2 <- xyplot(y^2 ~ x, foo, type = "l")
## simple case: no axis for the overlaid plot
doubleYScale(obj1, obj2, add.axis = FALSE)
## draw second y axis
doubleYScale(obj1, obj2)
## ...with second ylab
doubleYScale(obj1, obj2, add.ylab2 = TRUE)
## ...or with a key
doubleYScale(obj1, obj2, text = c("obj1", "obj2"))
## ...with custom styles
update(doubleYScale(obj1, obj2, text = c("obj1", "obj2")),
par.settings = simpleTheme(col = c('red','black'), lty = 1:2))
## different plot types
x <- rnorm(60)
doubleYScale(histogram(x), densityplot(x), use.style = FALSE)
## (but see ?as.layer for a better way to do this)
## multi-panel example
## a variant of Figure 5.13 from Sarkar (2008)
## http://lmdvr.r-forge.r-project.org/figures/figures.html?chapter=05;figure=05_13
data(SeatacWeather)
temp <- xyplot(min.temp + max.temp ~ day | month,
data = SeatacWeather, type = "l", layout = c(3, 1))
rain <- xyplot(precip ~ day | month, data = SeatacWeather, type = "h")
doubleYScale(temp, rain, style1 = 0, style2 = 3, add.ylab2 = TRUE,
text = c("min. T", "max. T", "rain"), columns = 3)
## re-plot with different styles
update(trellis.last.object(),
par.settings = simpleTheme(col = c("black", "red", "blue")))