Draw a "ladder of powers" plot, plotting each of several powers of y against the same powers of x. The powers are
result <- data.frame(-1/x, -1/sqrt(x), log(x), sqrt(x), x, x^2)
names(result) <- c(-1, -.5, 0, .5, 1, 2)
ladder(formula.in, data=NULL,
       main.in="Ladders of Powers",
       panel.in=panel.cartesian,
       xlab=deparse(formula.in[[3]]),
       ylab=deparse(formula.in[[2]]),
       scales=list(alternating=FALSE,
         labels=FALSE, ticks=FALSE, cex=.6),
       par.strip.text=list(cex=.6),
       cex=.5, pch=16, between=list(x=.3, y=.3),
       dsx=xlab,
       dsy=ylab,
       ladder.function=ladder.f,
       strip.number=2,
       strip.names,
       strip.style=1,
       strip,
       oma=c(0,0,0,0),  ## S-Plus
       axis3.line=.61,
       layout=c(length(tmp$x.power), length(tmp$y.power)),
       axis.key.padding = 10, ## R right axis
       key.axis.padding = 10, ## R top axis
       useOuter=TRUE, ## R useOuterStrips(combineLimits(result))
       ...)ladder3(x, y,
        dsx=deparse(substitute(x)),
        dsy=deparse(substitute(y)),
        ladder.function=ladder.f)
ladder.f(x, name.prefix="")
ladder.fstar(x, name.prefix="")
strip.ladder(which.given,
             which.panel,
             var.name,
             factor.levels,
             shingle.intervals,
             par.strip.text=trellis.par.get("add.text"),
             strip.names=c(TRUE,TRUE),
             style=1,
             ...)
A formula with exactly one variable on each side.
data.frame
main title for xyplot
panel.cartesian has many arguments in addition
             to the arguments in panel.xyplot.  Any replacement
             panel function must have those argument names, even if it
             doesn't do anything with them.
Trellis arguments,  default to right- and left-sides
             of the formula.in.
Strip function. Our default is strip.ladder
             (see below).  The other viable argument value is FALSE.
arguments for xyplot.
Names to be used as level names in
    ladder.function for the generated factor distinguishing the
    powers.  They default to xlab, ylab.  For long variable names,
    an abbreviated name here will decrease clutter in the ladder of powers
    plot.  These names are not visible in the plot when
    strip=FALSE.
function to use to create data.frame of powers of input variable.
Base name used for column names of powers.  The
             default is empty ("").  An alternative must include
             the power symbol "^", for example, "abc^".
Number of strip labels in each panel of the display.
    0: no strip labels; 1: one strip label of the form y^p ~ x^q;
    2: two strip labels of the form ylab: y^p and xlab: x^q,
    where p and q are the powers returned by ladders;
  y and x are the arguments dsy and dsx.
logical, defaults to TRUE. In R, this implies
    that strip.number is forced to 2 and that the
    resulting "trellis" object will be sent through
    useOuterStrips(combineLimits(result)).
    This argument is ignored by S-Plus.
style argument to strip.
argument to par in S-Plus.
other arguments to xyplot.
extra space to make the top axis align with the top of the top row of panels. Trial and error to choose a good value.
Extra space on right of set of panels in R.
Extra space on top of set of panels in R.
variables.
See
We always print the strip.names
  in style=1.  Multicolored styles are too busy.
ladder returns a "trellis" object.
The functions ladder.fstar and ladder.f take an input
vector x of non-negative values and construct a data.frame by
taking the input to the powers c(-1, -.5, 0, .5, 1, 2), one
column per power.  ladder.f uses the simple powers and
ladder.fstar uses the scaled Box--Cox transformation.
| ladder.fstar | ladder.fstar | notation | 
| (x^p - 1)/p | (x^p - 1)/p | p | 
| (1/x - 1)/(-1) | (1/x - 1)/(-1) | -1.0 | 
| (1/sqrt(x)-1)/(-.5) | (1/sqrt(x)-1)/(-.5) | -0.5 | 
| log(x) | log(x) | 0.0 | 
| ((sqrt(x)-1)/.5) | ((sqrt(x)-1)/.5) | 0.5 | 
| x-1 | x-1 | 1.0 | 
| (x^2 - 1)/2 | (x^2 - 1)/2 | 2.0 | 
ladder3 takes two vectors as arguments.  It returns a
data.frame with five columns:
X, Y: data to be plotted.  The column X contains the data
    from the input x taken to all the powers and aligned with the
    similarly expanded column Y.
x, y: symbolic labeling of the power corresponding to X,Y.
group: result from pasting the labels in x, y with *
    between them.
The ladder function uses panel.cartesian which is
  defined differently in R (using grid graphics) and S-Plus (using
  traditional graphics).  Therefore the fine control over appearance
  uses different arguments or different values for the same arguments.
Heiberger, Richard M. and Holland, Burt (2015). Statistical Analysis and Data Display: An Intermediate Course with Examples in R. Second Edition. Springer-Verlag, New York. https://www.springer.com/us/book/9781493921218
Hoaglin, D.~C., Mosteller, F., and Tukey, J.~W., editors (1983). Understanding Robust and Exploratory Data Analysis. Wiley.
Box, G. E.~P. and Cox, D.~R. (1964). An analysis of transformations. J. Royal Statist Soc B, 26:211--252.
# NOT RUN {
data(tv)
## default
## R: outer strip labels
ladder(life.exp ~ ppl.per.phys, data=tv,
       main="Ladder of Powers for Life Expectancy and People per Physician")
# }
# NOT RUN {
## one strip label
  ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=1, useOuter=FALSE,
         dsx="ppp", dsy="le")
## two strip labels
  ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=2, useOuter=FALSE)
## outer strip labels
ladder(life.exp ~ ppl.per.phys, data=tv, useOuter=TRUE)
## no strip labels (probably silly, but possible)
ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=0, useOuter=FALSE)
# }
Run the code above in your browser using DataLab