R: Useful Panel Function Components

F_2_panel.functions {lattice} | R Documentation

## Useful Panel Function Components

### Description

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

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

### Author(s)

Deepayan Sarkar Deepayan.Sarkar@R-project.org

### See Also

Lattice, `panel.axis`, `panel.identify` `identify`, `trellis.par.set`.

### Examples

    ## 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)), ...)
              } )

[Package lattice version 0.20-6 Index]