File: panel.functions.Rd

package info (click to toggle)
lattice 0.20-41-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,988 kB
  • sloc: ansic: 357; makefile: 2
file content (260 lines) | stat: -rw-r--r-- 9,912 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
\name{F_2_panel.functions}
\alias{panel.functions}
%% Not data-dependent
\alias{panel.abline}
\alias{panel.refline}
\alias{panel.curve}
\alias{panel.fill}
\alias{panel.grid}
\alias{panel.mathdensity}
%% Data-dependent
\alias{panel.rug}
\alias{panel.lmline}
\alias{panel.average}
\alias{panel.linejoin}
\title{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,
             \dots,
             reference = FALSE,
             identifier = "abline")
panel.refline(\dots) 

panel.curve(expr, from, to, n = 101,
            curve.type = "l",
            col, lty, lwd, type,
            \dots,
            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,
          \dots,
          identifier = "rug")
panel.average(x, y, fun = mean, horizontal = TRUE,
              lwd, lty, col, col.line, type,
              \dots,
              identifier = "linejoin")
panel.linejoin(x, y, fun = mean, horizontal = TRUE,
               lwd, lty, col, col.line, type,
               \dots,
               identifier = "linejoin")

% panel.abline(a, b, \dots)
% panel.abline(coef, \dots)
% panel.abline(reg, \dots)
% panel.abline(h= ,v= , \dots)
panel.fill(col, border, \dots, identifier = "fill")
panel.grid(h=3, v=3, col, col.line, lty, lwd, x, y, \dots, identifier = "grid")
panel.lmline(x, y, \dots, identifier = "lmline")
panel.mathdensity(dmath = dnorm, args = list(mean=0, sd=1),
                  n = 50, col, col.line, lwd, lty, type,
                  \dots, identifier = "mathdensity")
}
\arguments{
  \item{x, y}{ Variables defining the contents of the panel.
    In \code{panel.grid} these are optional and are used only to choose
    an appropriate method of \code{\link{pretty}}.
  }
  \item{a, b}{ Coefficients of the line to be added by
    \code{panel.abline}.  \code{a} can be a vector of length 2,
    representing the coefficients of the line to be added, in which case
    \code{b} should be missing.  \code{a} can also be an appropriate
    \sQuote{regression} object, i.e., an object which has a
    \code{\link{coef}} method that returns a length 2 numeric vector.
    The corresponding line will be plotted.  The \code{reg} argument
    overrides \code{a} if specified.
  }

  \item{coef}{ Coefficients of the line to be added as a vector of
    length 2.
  }

  \item{reg}{ A (linear) regression object, with a \code{\link{coef}}
    method that gives the coefficints of the corresponding regression
    line. }

  \item{h, v}{ For \code{panel.abline}, these are numeric vectors giving
    locations respectively of horizontal and vertical lines to be added
    to the plot, in native coordinates.

    For \code{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.  \code{h=-1} and
    \code{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 \code{pretty}, which is also how the
    label positions are chosen in the most common cases (but not for
    factor variables, for instance).  \code{h} and \code{v} can be
    negative numbers other than \code{-1}, in which case \code{-h} and
    \code{-v} (as appropriate) is supplied as the \code{n} argument to
    \code{\link{pretty}}.

    If \code{x} and/or \code{y} are specified in \code{panel.grid}, they
    will be used to select an appropriate method for
    \code{\link{pretty}}.  This is particularly useful while plotting
    date-time objects.
    
  }

  \item{reference}{ A logical flag determining whether the default
    graphical parameters for \code{panel.abline} should be taken from
    the \dQuote{reference.line} parameter settings.  The default is to
    take them from the \dQuote{add.line} settings.  The
    \code{panel.refline} function is a wrapper around
    \code{panel.abline} that calls it with \code{reference = TRUE}.
  }

  \item{expr}{ An expression considered as a function of \code{x}, or a
    function, to be plotted as a curve.   }
  \item{n}{ The number of points to use for drawing the curve. }
  \item{from, to}{ optional lower and upper x-limits of curve. If
    missing, limits of current panel are used
  }
  \item{curve.type}{ Type of curve (\code{"p"} for points, etc), passed
    to \code{\link{llines}}
  }

  \item{regular}{ A logical flag indicating whether the \sQuote{rug} is
    to be drawn on the \sQuote{regular} side (left / bottom) or not
    (right / top).  }

  \item{start, end}{ endpoints of rug segments, in normalized parent
    coordinates (between 0 and 1).  Defaults depend on value of
    \code{regular}, and cover 3\% of the panel width and height. }

  \item{x.units, y.units}{
    Character vectors, replicated to be of length two.  Specifies the
    (grid) units associated with \code{start} and \code{end} above.
    \code{x.units} and \code{y.units} are for the rug on the x-axis and
    y-axis respectively (and thus are associated with \code{start} and
    \code{end} values on the y and x scales respectively).
  }
  \item{col, col.line, lty, lwd, alpha, border}{ Graphical parameters. }

  \item{type}{ Usually ignored by the panel functions documented here;
    the argument is present only to make sure an explicitly specified
    \code{type} argument (perhaps meant for another function) does not
    affect the display.
  }

  \item{fun}{ The function that will be applied to the subset of
    \code{x} values (or \code{y} if \code{horizontal} is \code{FALSE})
    determined by the unique values of \code{y} (\code{x}). }

  \item{horizontal}{ A logical flag. If \code{FALSE}, the plot is
    \sQuote{transposed} in the sense that the roles of \code{x} and
    \code{y} are switched; \code{x} is now the \sQuote{factor}.
    Interpretation of other arguments change accordingly. See
    documentation of \code{\link{bwplot}} for a fuller explanation.
  }

  \item{dmath}{ A vectorized function that produces density values given
    a numeric vector named \code{x}, e.g., \code{\link{dnorm}}.
  }

  \item{args}{ A list giving additional arguments to be passed to
    \code{dmath}.
  }

  \item{\dots}{ Further arguments, typically graphical parameters,
    passed on to other low-level functions as appropriate.  Color can
    usually be specified by \code{col}, \code{col.line}, and
    \code{col.symbol}, the last two overriding the first for lines and
    points respectively.
  }

  \item{identifier}{
    A character string that is prepended to the names of grobs
    that are created by this panel function.
  }
}
\details{

  \code{panel.abline} adds a line of the form \code{y = a + b * x}, or
  vertical and/or horizontal lines.  Graphical parameters are obtained
  from the \dQuote{add.line} settings by default.  \code{panel.refline}
  is similar, but uses the \dQuote{reference.line} settings for the
  defaults.

  \code{panel.grid} draws a reference grid.

  \code{panel.curve} adds a curve, similar to what \code{\link{curve}}
  does with \code{add = TRUE}.  Graphical parameters for the curve are
  obtained from the \dQuote{add.line} setting.

  \code{panel.average} treats one of \code{x} and \code{y} as a factor
  (according to the value of \code{horizontal}), calculates \code{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 \code{panel.xyplot}, and more commonly with
  \code{\link{panel.superpose}} to produce interaction plots.

  \code{panel.linejoin} is an alias for \code{panel.average}.  It is
  retained for back-compatibility, and may go away in future.

  \code{panel.mathdensity} plots a (usually theoretical) probability
  density function.  This can be useful in conjunction with
  \code{histogram} and \code{densityplot} to visually assess goodness of
  fit (note, however, that \code{qqmath} is more suitable for this).

  \code{panel.rug} adds a \emph{rug} representation of the (marginal)
  data to the panel, much like \code{\link{rug}}.

  \code{panel.lmline(x, y)} is equivalent to
  \code{panel.abline(lm(y ~ x))}.

}

\seealso{
  \link{Lattice}, \code{\link{panel.axis}}, \code{\link{panel.identify}}
  \code{\link{identify}}, \code{\link{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)), ...)
          } )


}

\author{ Deepayan Sarkar \email{Deepayan.Sarkar@R-project.org}}
\keyword{dplot}