# F_2_panel.functions

##### Useful Panel Function Components

These are predefined panel functions available in lattice for use in constructing new panel functions (often on-the-fly).

- Keywords
- dplot

##### Usage

```
panel.abline(a = NULL, b = 0,
h = NULL, v = NULL,
reg = NULL, coef = NULL,
col, col.line, lty, lwd, alpha, type,
…,
reference = FALSE,
identifier = "abline")
panel.refline(…)
```panel.curve(expr, from, to, n = 101,
curve.type = "l",
col, lty, lwd, type,
…,
identifier = "curve")
panel.rug(x = NULL, y = NULL,
regular = TRUE,
start = if (regular) 0 else 0.97,
end = if (regular) 0.03 else 1,
x.units = rep("npc", 2),
y.units = rep("npc", 2),
col, col.line, lty, lwd, alpha,
…,
identifier = "rug")
panel.average(x, y, fun = mean, horizontal = TRUE,
lwd, lty, col, col.line, type,
…,
identifier = "linejoin")
panel.linejoin(x, y, fun = mean, horizontal = TRUE,
lwd, lty, col, col.line, type,
…,
identifier = "linejoin")

panel.fill(col, border, …, identifier = "fill")
panel.grid(h=3, v=3, col, col.line, lty, lwd, x, y, …, identifier = "grid")
panel.lmline(x, y, …, identifier = "lmline")
panel.mathdensity(dmath = dnorm, args = list(mean=0, sd=1),
n = 50, col, col.line, lwd, lty, type,
…, identifier = "mathdensity")

##### Arguments

- x, y
Variables defining the contents of the panel. In

`panel.grid`

these are optional and are used only to choose an appropriate method of`pretty`

.- a, b
Coefficients of the line to be added by

`panel.abline`

.`a`

can be a vector of length 2, representing the coefficients of the line to be added, in which case`b`

should be missing.`a`

can also be an appropriate ‘regression’ object, i.e., an object which has a`coef`

method that returns a length 2 numeric vector. The corresponding line will be plotted. The`reg`

argument overrides`a`

if specified.- coef
Coefficients of the line to be added as a vector of length 2.

- reg
A (linear) regression object, with a

`coef`

method that gives the coefficints of the corresponding regression line.- h, v
For

`panel.abline`

, these are numeric vectors giving locations respectively of horizontal and vertical lines to be added to the plot, in native coordinates.For

`panel.grid`

, these usually specify the number of horizontal and vertical reference lines to be added to the plot. Alternatively, they can be negative numbers.`h=-1`

and`v=-1`

are intended to make the grids aligned with the axis labels. This doesn't always work; all that actually happens is that the locations are chosen using`pretty`

, which is also how the label positions are chosen in the most common cases (but not for factor variables, for instance).`h`

and`v`

can be negative numbers other than`-1`

, in which case`-h`

and`-v`

(as appropriate) is supplied as the`n`

argument to`pretty`

.If

`x`

and/or`y`

are specified in`panel.grid`

, they will be used to select an appropriate method for`pretty`

. This is particularly useful while plotting date-time objects.- reference
A logical flag determining whether the default graphical parameters for

`panel.abline`

should be taken from the “reference.line” parameter settings. The default is to take them from the “add.line” settings. The`panel.refline`

function is a wrapper around`panel.abline`

that calls it with`reference = TRUE`

.- expr
An expression considered as a function of

`x`

, or a function, to be plotted as a curve.- n
The number of points to use for drawing the curve.

- from, to
optional lower and upper x-limits of curve. If missing, limits of current panel are used

- curve.type
Type of curve (

`"p"`

for points, etc), passed to`llines`

- regular
A logical flag indicating whether the ‘rug’ is to be drawn on the ‘regular’ side (left / bottom) or not (right / top).

- start, end
endpoints of rug segments, in normalized parent coordinates (between 0 and 1). Defaults depend on value of

`regular`

, and cover 3% of the panel width and height.- x.units, y.units
Character vectors, replicated to be of length two. Specifies the (grid) units associated with

`start`

and`end`

above.`x.units`

and`y.units`

are for the rug on the x-axis and y-axis respectively (and thus are associated with`start`

and`end`

values on the y and x scales respectively).- col, col.line, lty, lwd, alpha, border
Graphical parameters.

- type
Usually ignored by the panel functions documented here; the argument is present only to make sure an explicitly specified

`type`

argument (perhaps meant for another function) does not affect the display.- fun
The function that will be applied to the subset of

`x`

values (or`y`

if`horizontal`

is`FALSE`

) determined by the unique values of`y`

(`x`

).- horizontal
A logical flag. If

`FALSE`

, the plot is ‘transposed’ in the sense that the roles of`x`

and`y`

are switched;`x`

is now the ‘factor’. Interpretation of other arguments change accordingly. See documentation of`bwplot`

for a fuller explanation.- dmath
A vectorized function that produces density values given a numeric vector named

`x`

, e.g.,`dnorm`

.- args
A list giving additional arguments to be passed to

`dmath`

.- …
Further arguments, typically graphical parameters, passed on to other low-level functions as appropriate. Color can usually be specified by

`col`

,`col.line`

, and`col.symbol`

, the last two overriding the first for lines and points respectively.- identifier
A character string that is prepended to the names of grobs that are created by this panel function.

##### Details

`panel.abline`

adds a line of the form `y = a + b * x`

, or
vertical and/or horizontal lines. Graphical parameters are obtained
from the “add.line” settings by default. `panel.refline`

is similar, but uses the “reference.line” settings for the
defaults.

`panel.grid`

draws a reference grid.

`panel.curve`

adds a curve, similar to what `curve`

does with `add = TRUE`

. Graphical parameters for the curve are
obtained from the “add.line” setting.

`panel.average`

treats one of `x`

and `y`

as a factor
(according to the value of `horizontal`

), calculates `fun`

applied to the subsets of the other variable determined by each unique
value of the factor, and joins them by a line. Can be used in
conjunction with `panel.xyplot`

, and more commonly with
`panel.superpose`

to produce interaction plots.

`panel.linejoin`

is an alias for `panel.average`

. It is
retained for back-compatibility, and may go away in future.

`panel.mathdensity`

plots a (usually theoretical) probability
density function. This can be useful in conjunction with
`histogram`

and `densityplot`

to visually assess goodness of
fit (note, however, that `qqmath`

is more suitable for this).

`panel.rug`

adds a *rug* representation of the (marginal)
data to the panel, much like `rug`

.

`panel.lmline(x, y)`

is equivalent to
`panel.abline(lm(y ~ x))`

.

##### See Also

Lattice, `panel.axis`

, `panel.identify`

`identify`

, `trellis.par.set`

.

##### Examples

`library(lattice)`

```
# NOT RUN {
## Interaction Plot
bwplot(yield ~ site, barley, groups = year,
panel = function(x, y, groups, subscripts, ...) {
panel.grid(h = -1, v = 0)
panel.stripplot(x, y, ..., jitter.data = TRUE,
groups = groups, subscripts = subscripts)
panel.superpose(x, y, ..., panel.groups = panel.average,
groups = groups, subscripts = subscripts)
},
auto.key =
list(points = FALSE, lines = TRUE, columns = 2))
## Superposing a fitted normal density on a Histogram
histogram( ~ height | voice.part, data = singer, layout = c(2, 4),
type = "density", border = "transparent", col.line = "grey60",
xlab = "Height (inches)",
ylab = "Density Histogram\n with Normal Fit",
panel = function(x, ...) {
panel.histogram(x, ...)
panel.mathdensity(dmath = dnorm,
args = list(mean=mean(x),sd=sd(x)), ...)
} )
# }
```

*Documentation reproduced from package lattice, version 0.20-35, License: GPL (>= 2)*