ladder {HH} | R Documentation |
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=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=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 ...) ladder3(x, y, dsx=deparse(substitute(x)), dsy=deparse(substitute(y)), ladder.function=ladder.f) ladder.f(x) ladder.fstar(x) 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, ...)
formula.in |
A formula with exactly one variable on each side. |
data |
data.frame |
main.in |
main title for xyplot |
panel.in |
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. |
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 is FALSE . |
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 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 . |
ladder.function |
function to use to create data.frame of powers of input variable. |
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 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 . |
strip.style |
style argument to strip . |
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
strip.default in R or
strip.default in S-Plus. |
strip.names, style |
We always print the strip.names
in style=1 . Multicolored styles are too busy. |
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.
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.
Richard M. Heiberger <rmh@temple.edu>
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.
## some country names have embedded blanks tv <- if.R(r= read.fwf(hh("datasets/tv.dat"), widths=c(22,6,7,7,4,2), strip.white=TRUE, na.strings="*", row.names=1) ,s= read.table(hh("datasets/tv.dat"), sep=c(1,23,29,36,43,47), na.strings="*") ) names(tv) <- c("life.exp","ppl.per.tv","ppl.per.phys", "fem.life.exp","male.life.exp") ## Default: single strip label per panel ladder(life.exp ~ ppl.per.phys, data=tv, main="Ladder of Powers for Life Expectancy and People per Physician", dsx="ppp", dsy="le") ## double strip label if.R(r= ladder(life.exp ~ ppl.per.phys, data=tv, main="Ladder of Powers for Life Expectancy and People per Physician", strip.number=2, dsx="ppp", dsy="le") ,s= ladder(life.exp ~ ppl.per.phys, data=tv, main="Ladder of Powers for Life Expectancy and People per Physician", strip.number=2, dsx="ppp", dsy="le", axis3.line=1.2) ) ## turn off strip labels if.R(r= ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=0,, main="Ladder of Powers for Life Expectancy and People per Physician") ,s= ladder(life.exp ~ ppl.per.phys, data=tv, strip.number=0,, main="Ladder of Powers for Life Expectancy and People per Physician", axis3.line=0) )