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=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,
...)
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 ladder of powers plot. These names are not visible in the plot whenstrip=FALSE
.- 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
are the powers returned byladders
;y
andx
are the argumentsdsy
anddsx
.- 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))
. This argument is ignored by S-Plus.- 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
- 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
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.
References
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.
See Also
Examples
# 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)
# }