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,
...
)
```

- 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

`xhistogramBreaks`

returns a vector of break points

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.

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.

```
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
```