Create a normal probability plot with one
line for each y
variable or each
data.frame
in a list data.
with different plotting symbols for the values
of z
.
To create a normal probability plot with one
y
variable split on a link{factor}
or character
variable x
,
see qqnorm2t
.
qqnorm2s
produces an object of class
qqnorm2s
, whose plot method produces
the plot.
qqnorm2s(y, z=NULL, data., plot.it=TRUE,
datax=TRUE, outnames=NULL, pch=NULL,
col=c(1:4, 6), legend.=NULL, ...)
# S3 method for qqnorm2s
plot(x, y, ...)
a character
vector of names
of columns of data.
for which normal
probability plots are desired. data.
is either a data.frame
or a
list of data.frame
s of the same
length as y
, with y[i] being the name
of a column of the data.frame
data.[[i]]
. z
is a similar
character vector of names of columns of
data.
, which identify symbols for
plotting different points in a normal
probability plot.
The lengths of y
, and z
must
match the number of data.frame
s in
data.
; if not, the lengths of the
shorter are replicated to the length of the
longest before computations begin.
For plot.qqnorm2s
, y
is
ignored; it is included, because the
generic plot
function requires
it.
A character vector giving the names of
columns of data.
to
indicate different plotting symbols.
z
should be the same length as
y
and must equal the number of
data.frame
s in the list data.
of data.frames
. If not, the shorter
are replicated to the length of the longer.
a data.frame
or a list of
data.frames with columns named in y
and z
.
logical: Should the result be plotted?
Names for the components of the
qqnorm2s
object returned by the
qqnorm2s
function.
a named vector of the plotting symbols to
be used with names corresponding to the
levels of z
.
By default, if z
takes levels
FALSE
and TRUE
(or 0 and 1),
pch
=c(4, 1) to plot a "x" for
FALSE
and "o" for TRUE
.
If z
assumes integer values between 0
and 255, by default, the symbols are chosen
as described with points
.
Otherwise, by default, z
is coerced to
character
, and the result is
plotted.
If pch
is provided, it must either
have names corresponding to levels of
z
, or z
must be integers
between 1 and length(pch)
.
A vector indicating the colors corresponding
to each element of y
. Defaults to
rep(c(1:4, 6), length=length(y))
, with
1:4 and 6 being black, red, green, blue, and
pink.
an object of class qqnorm2
.
A list with components pch
and
col
providing information for
legend
to identify the
plotting symbols (pch
) and colors
(col
).
By default, pch = list(x='right',
legend=names(qq2s[[1]][['pch']]),
pch=qq2s[[1]][['pch']])
, where qq2s
is described below in details.
Similarly, by default, lines =
list(x='bottomright', legend=y,
lty=1, pch=NA, col=qq2s[[1]][['col']])
.
Optional arguments.
For plot.qqnorm2s
, they are passed
to plot
.
For qqnorm2s
, they are passed to
qqnorm2
and to
plot.qqnorm2s
.
qqnorm2s
returns a named list with
components of class qqnorm2
with names
= y
with each component having an
additional component col
plus one
called "legend.
".
For qqnorm2s
:
1. Create qq2s
= a list of objects
of class qqnorm2
2. Add legend.
to qq2s
.
3. class(qq2s) <- 'qqnorm2s'
4. if(plot.it)plot(qq2s, ...)
5. Silently return(qq2s)
.
For plot.qqnorm2s
, create a plot with
one line for each variable named in y
.
# NOT RUN {
##
## One data.frame
##
tstDF2 <- data.frame(y=1:3, y2=3:5,
z2=c(TRUE, TRUE, FALSE),
z3=c('tell', 'me', 'why'),
z4=c(1, 2.4, 3.69) )
# produce the object and plot it
Qn2 <- qqnorm2s(c('y', 'y2'), 'z2', tstDF2)
# plot the object previously created
plot(Qn2)
# Check the object
qy <- with(tstDF2, qqnorm2(y, z2, type='b'))
qy$col <- 1
qy2 <- with(tstDF2, qqnorm2(y2, z2, type='b'))
qy2$col <- 2
legend. <- list(
pch=list(x='right',
legend=c('FALSE', 'TRUE'),
pch=c('FALSE'=4, 'TRUE'= 1)),
col=list(x='bottomright',
legend=c('y', 'y2'), lty=1, col=1:2))
Qn2. <- list(y=qy, y2=qy2, legend.=legend.)
class(Qn2.) <- 'qqnorm2s'
# }
# NOT RUN {
all.equal(Qn2, Qn2.)
# }
# NOT RUN {
##
## Two data.frames
##
tstDF2b <- tstDF2
tstDF2b$y <- c(0.1, 0.1, 9)
Qn2b <- qqnorm2s('y', 'z2',
list(tstDF2, tstDF2b),
outnames=c('ok', 'oops'), log='x' )
##
## Split one data.frame
##
tstDF2. <- rbind(cbind(tstDF2, z1=1),
cbind(tstDF2b, z1=2) )
Qn2. <- qqnorm2s('y', 'z1', tstDF2.)
# Plot has only one line, because only 1 y variable.
##
## Two data.frames without z
##
Qn2.0 <- qqnorm2s('y',
data.=list(tstDF2, tstDF2b),
outnames=c('ok', 'oops'), log='x' )
# }
Run the code above in your browser using DataLab