doubleYScale {latticeExtra} | R Documentation |
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.
doubleYScale(obj1, obj2, use.style = TRUE, add.axis = TRUE, add.ylab2 = FALSE, style1 = 1, style2 = 2, text = NULL, auto.key = if (!is.null(text)) list(text, points = points, lines = lines, ...), points = FALSE, lines = TRUE, ...)
obj1, obj2 |
trellis objects. Note that most settings, like main/sub/legend/etc
are taken only from obj1 ; only the panel, axis and ylab are
taken from obj2.
|
use.style |
if TRUE, set plot style (with trellis.par.set ) to different
style settings for each series. The settings are taken mainly from
trellis.par.get("superpose.line") . These will also be applied
to the y-axes and ylab, if relevant.
|
add.axis |
if TRUE, draw a second y axis (for the obj2 series) on the
right side of the plot.
|
add.ylab2 |
if TRUE, draw a second y axis label (from obj2$ylab ) on the
right side of the plot. Note, this will replace any existing key or
legend on the right side, i.e. with space = "right" .
|
style1, style2 |
if use.style is TRUE, these give the `group number' for obj1
and obj2 respectively. The style is taken from these indices into
the values of trellis.par.get("superpose.line") .
Therefore these should be integers between 1 and 6;
a value of 0 can be given to leave the default settings.
|
text, auto.key, points, lines, ... |
if non-NULL, add a key to the display, using entries named by
text . Further arguments are passed on to
simpleKey at plot time.
|
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.
a merged trellis object.
Felix Andrews felix@nfrac.org
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")) ## different plot types x <- rnorm(60) doubleYScale(histogram(x), densityplot(x), use.style = FALSE) ## 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")))