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")))