ladder
Draw a "ladder of powers" plot, plotting each of several powers of y against the same powers of x.
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)
Usage
ladder(formula.in, data=sys.parent(),
main.in="Ladders of Powers",
panel.in=panel.cartesian,
xlab=deparse(formula.in[[3]]),
ylab=deparse(formula.in[[2]]),
scales=list(alternating=if.R(s=TRUE, r=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=if.R(r=2, s=1),
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,
...)
Arguments
- formula.in
- A formula with exactly one variable on each side.
- data
- data.frame
- main.in
main
title forxyplot
- panel.in
panel.cartesian
has many arguments in addition to the arguments inpanel.xyplot
. Any replacement panel function must have those argument names, even if it doesn't do anything with them.- xlab, ylab
- Trellis arguments, default to right- and left-sides
of the
formula.in
. - strip
- Strip function. Our default is
strip.ladder
(see below). The other viable argument value isFALSE
. - cex, pch, between, scales, layout
- arguments for
xyplot
. - dsx, dsy
- Names to be used as level names in
ladder.function
for the generated factor distinguishing the powers. They default toxlab, ylab
. For long variable names, an abbreviated name here will decrease clutter in the ladde - ladder.function
- function to use to create data.frame of powers of input variable.
- name.prefix
- Base name used for column names of powers. The
default is empty (
""
). An alternative must include the power symbol"^"
, for example,"abc^"
. - strip.number
- 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 formylab: y^p
andxlab: x^q
, wherep
andq
- useOuter
- logical, defaults to
TRUE
. In R, this implies thatstrip.number
is forced to2
and that the resulting"trellis"
object will be sent throughuseOuterStrips(combineLimits(result))
. Thi - strip.style
style
argument tostrip
.- oma
- argument to
par
in S-Plus. - ...
- other arguments to
xyplot
. - axis3.line
- 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.
- axis.key.padding
- Extra space on right of set of panels in R.
- key.axis.padding
- Extra space on top of set of panels in R.
- x, y
- variables.
- which.given, which.panel, var.name, factor.levels, shingle.intervals, par.strip.text
- See#ifndef S-Plus
strip.default
. #endif #ifdef S-Plusstrip.default
. #endif - strip.names, style
- We always print the
strip.names
instyle=1
. Multicolored styles are too busy.
Details
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.
Value
ladder
returns a"trellis"
object.The functions
ladder.fstar
andladder.f
take an input vectorx
of non-negative values and construct a data.frame by taking the input to the powersc(-1, -.5, 0, .5, 1, 2)
, one column per power.ladder.f
uses the simple powers andladder.fstar
uses the scaled Box--Cox transformation.llr {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.5log(x)
log(x)
0.0((sqrt(x)-1)/.5)
((sqrt(x)-1)/.5)
0.5x-1
x-1
1.0(x^2 - 1)/2
(x^2 - 1)/2
2.0 }ladder3
takes two vectors as arguments. It returns adata.frame
with five columns:X, Y
: data to be plotted. The columnX
contains the data from the inputx
taken to all the powers and aligned with the similarly expanded columnY
.x, y
: symbolic labeling of the power corresponding toX,Y
.group
: result from pasting the labels inx, y
with*
between them.
References
Heiberger, Richard M. and Holland, Burt (2004b). Statistical Analysis and Data Display: An Intermediate Course with Examples in S-Plus, R, and SAS. Springer Texts in Statistics. Springer. ISBN 0-387-40270-5.
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.
See Also
Examples
data(tv)
## default
## R: outer strip labels
## S-Plus: one strip label per panel (too full for this example, see below)
ladder(life.exp ~ ppl.per.phys, data=tv,
main="Ladder of Powers for Life Expectancy and People per Physician")
## one strip label
if.R(r=ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=1, useOuter=FALSE,
dsx="ppp", dsy="le"),
s=ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=1,
dsx="ppp", dsy="le")) ## S-Plus default
## two strip labels
if.R(r=ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=2, useOuter=FALSE),
s=ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=2,
axis3.line=1.2))
## outer strip labels
if.R(r=ladder(life.exp ~ ppl.per.phys, data=tv, useOuter=TRUE), ## R default
s={}) ## S-Plus not available
## no strip labels (probably silly, but possible)
if.R(r=ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=0, useOuter=FALSE),
s=ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=0,
axis3.line=0))