The mosaic package adds some additional functionality to lattice::histogram(), making it simpler to obtain certain common histogram adornments. This is done be resetting the default panel and prepanel functions used by histogram.

xhistogramBreaks(x, center = NULL, width = NULL, nint, ...)

prepanel.xhistogram(x, breaks = xhistogramBreaks, ...)

panel.xhistogram(
  x,
  dcol = trellis.par.get("plot.line")$col,
  dalpha = 1,
  dlwd = 2,
  gcol = trellis.par.get("add.line")$col,
  glwd = 2,
  fcol = trellis.par.get("superpose.polygon")$col,
  dmath = dnorm,
  verbose = FALSE,
  dn = 100,
  args = NULL,
  labels = FALSE,
  density = NULL,
  under = FALSE,
  fit = NULL,
  start = NULL,
  type = "density",
  v,
  h,
  groups = NULL,
  center = NULL,
  width = NULL,
  breaks,
  nint = round(1.5 * log2(length(x)) + 1),
  stripes = c("vertical", "horizontal", "none"),
  alpha = 1,
  ...
)

Arguments

x

a formula or a numeric vector

center

center of one of the bins

width

width of the bins

nint

approximate number of bins

...

additional arguments passed from lattice::histogram() to the panel function; by default when the mosaic package has been loaded this will be panel.xhistogram().

breaks

break points for histogram bins, a function for computing such, or a method hist() knows about given as a character string. When using the mosaic package defaults, xhistogramBreaks() is used.

dcol

color of density curve

dalpha

alpha for density curve

dlwd, glwd

like lwd but affecting the density line and guide lines, respectively

gcol

color of guidelines

fcol

fill colors for histogram rectangles when using groups. (Use col, which is passed through to the histogram panel function, when not using groups.)

dmath

density function for density curve overlay

verbose

be verbose?

dn

number of points to sample from density curve

args

a list of additional arguments for dmath

labels

should counts/densities/percents be displayed or each bin?

density

a logical indicating whether to overlay a density curve

under

a logical indicating whether the density layers should be under or over other layers of the plot.

fit

a character string describing the distribution to fit. Known distributions include "exponential", "normal", "lognormal" , "poisson", "beta", "geometric", "t", "weibull", "cauchy", "gamma", "chisq", and "chi-squared"

start

numeric value passed to MASS::fitdistr()

type

one of 'density', 'count', or 'percent'

h, v

a vector of values for additional horizontal and vertical lines

groups

as per lattice::histogram()

stripes

one of "vertical", "horizontal", or "none", indicating how bins should be striped when groups is not NULL

alpha

transparency level

panel

a panel function

Value

xhistogramBreaks returns a vector of break points

Details

The primary additional functionality added to histogram() are the arguments width and center which provide a simple way of describing equal-sized bins, and fit which can be used to overlay the density curve for one of several distributions. The groups argument can be used to color the bins. The primary use for this is to shade tails of histograms, but there may be other uses as well.

Note

Versions of lattice since 0.20-21 support setting custom defaults for breaks, panel, and prepanel used by histogram(), so xhistogram() is no longer needed. As a result, xhistogram() (which was required in earlier versions of mosaic is no longer needed and has been removed.

Examples

if (require(mosaicData)) {
histogram(~age | substance, HELPrct, v=35, fit='normal')
histogram(~age, HELPrct, labels=TRUE, type='count')
histogram(~age, HELPrct, groups=cut(age, seq(10,80,by=10)))
histogram(~age, HELPrct, groups=sex, stripes='horizontal')
histogram(~racegrp, HELPrct, groups=substance,auto.key=TRUE)
xhistogramBreaks(1:10, center=5, width=1)
xhistogramBreaks(1:10, center=5, width=2)
xhistogramBreaks(0:10, center=15, width=3)
xhistogramBreaks(1:100, center=50, width=3)
xhistogramBreaks(0:10, center=5, nint=5)
}
#> [1] -1.25  1.25  3.75  6.25  8.75 11.25