dotchart3 {Hmisc} | R Documentation |
This is an adaptation of the R dotchart function that sorts categories
top to bottom, adds auxdata
and auxtitle
arguments to put
extra information in the right margin, and adds arguments cex.labels
,
cex.group.labels
, and groupfont
. By default, group
headings are in a larger, bold font.
dotchart3
also cuts a bit of white space from the top and bottom
of the chart. The most significant change, however, is in how x
is interpreted. Columns of x
no longer provide an alternate way
to define groups. Instead, they define superpositioned values. This is
useful for showing three quartiles, for example. Going along with this
change, pch
can now be a vector specifying symbols to use going
across columns of x
. x
was changed in this way because to
put multiple points on a line (e.g., quartiles) and keeping track of
par()
parameters when dotchart2
was called
with add=TRUE
was cumbersome. All the dotchart functions change
the margins to account for horizontal labels.
summaryD
creates aggregate data using summarize
and
calls dotchart3
with suitable arguments to summarize data by
major and minor categories.
dotchart3(x, labels = NULL, groups = NULL, gdata = NULL, cex = par("cex"), pch = 21, gpch = pch, bg = par("bg"), color = par("fg"), gcolor = par("fg"), lcolor = "gray", xlim = range(c(x, gdata), na.rm=TRUE), main = NULL, xlab = NULL, ylab = NULL, auxdata = NULL, auxtitle = NULL, auxgdata=NULL, axisat=NULL, axislabels=NULL, cex.labels = cex, cex.group.labels = cex.labels * 1.25, cex.auxdata=cex, groupfont = 2, ...) summaryD(formula, data=NULL, fun=mean, funm=fun, groupsummary=TRUE, auxvar=NULL, auxtitle='', vals=length(auxvar) > 0, fmtvals=format, cex.auxdata=.7, xlab=v[1], ylab=NULL, gridevery=NULL, gridcol=gray(.95), sort=TRUE, ...)
x |
a numeric vector or matrix |
labels |
labels for categories corresponding to rows of
|
groups,gdata,cex,pch,gpch,bg,color,gcolor,lcolor,xlim,main,xlab,ylab |
see |
auxdata |
a vector of information to be put in the right margin,
in the same order as |
auxtitle |
a column heading for |
auxgdata |
similar to |
axisat |
a vector of tick mark locations to pass to |
axislabels |
a vector of strings specifying axis tick mark labels. Useful if transforming the data axis |
cex.labels |
|
cex.group.labels |
|
cex.auxdata |
|
groupfont |
font number for group headings |
... |
other arguments passed to some of the graphics functions,
or to |
formula |
a formula with one variable on the left hand side (the
variable to compute summary statistics on), and one or two
variables on the right hand side. If there are two variables,
the first is taken as the major grouping variable. If the left
hand side variable is a matrix it has to be a legal R variable
name, not an expression, and |
data |
a data frame or list used to find the variables in
|
fun |
a summarization function creating a single number from a vector. Default is the mean. |
funm |
applies if there are two right hand variables and
|
groupsummary |
By default, when there are two right-hand
variables, |
auxvar |
when |
vals |
set to |
fmtvals |
an optional function to format values before putting
them in the right margin. Default is the |
gridevery |
specify a positive number to draw very faint vertical
grid lines every |
gridcol |
color for grid lines; default is very faint gray scale |
sort |
specify |
the function returns invisibly
Frank Harrell
dotchart
,dotchart2
,summarize
,
rlegend
set.seed(135) maj <- factor(c(rep('North',13),rep('South',13))) g <- paste('Category',rep(letters[1:13],2)) n <- sample(1:15000, 26, replace=TRUE) y1 <- runif(26) y2 <- pmax(0, y1 - runif(26, 0, .1)) dotchart3(cbind(y1,y2), g, groups=maj, auxdata=n, auxtitle='n', xlab='Y', pch=c(1,17)) ## Compare with dotchart function (no superpositioning or auxdata allowed): ## dotchart(y1, g, groups=maj, xlab='Y') summaryD(y1 ~ maj + g, xlab='Mean') summaryD(y1 ~ maj + g, groupsummary=FALSE) summaryD(y1 ~ g, fmtvals=function(x) sprintf('%4.2f', x)) Y <- cbind(y1, y2) # summaryD cannot handle cbind(...) ~ ... summaryD(Y ~ maj + g, fun=function(y) y[1,], pch=c(1,17)) rlegend(.1, 26, c('y1','y2'), pch=c(1,17)) summaryD(y1 ~ maj, fun=function(y) c(mean(y), n=length(y)), auxvar='n', auxtitle='N')