On 05/09/11 21:26, Deepayan Sarkar wrote:

<SNIP>
1. The `official' way to get panel arguments is trellis.panelArgs(); e.g.,

p<- histogram(~rnorm(100) | gl(2, 50), type = "density")
str(trellis.panelArgs(p, 2))
List of 5
  $ x           : num [1:50] 0.277 1.144 1.13 -0.912 -0.892 ...
  $ breaks      : num [1:9] -2.561 -1.979 -1.398 -0.816 -0.234 ...
  $ type        : chr "density"
  $ equal.widths: logi TRUE
  $ nint        : num 8

2. hist.constructor() is needed for technical reasons, and can be
considered to be the same as hist() for this purpose. So the
computations performed by panel.histogram() can be reduced to


histogram.computations<-
     function(x, breaks, equal.widths = TRUE,
              type = "density", nint, ...)
{
     if (is.null(breaks))
     {
         breaks<-
             if (is.factor(x)) seq_len(1 + nlevels(x)) - 0.5
             else if (equal.widths) do.breaks(range(x, finite = TRUE), nint)
             else quantile(x, 0:nint/nint, na.rm = TRUE)
     }
     hist(x, breaks = breaks, plot = FALSE)
}

which may be used as follows to get the ``actual data defining the histogram'':

a<- trellis.panelArgs(p, 2)
h<- do.call(histogram.computations, a)
str(h)
List of 7
  $ breaks     : num [1:9] -2.561 -1.979 -1.398 -0.816 -0.234 ...
  $ counts     : int [1:8] 1 4 6 14 7 8 6 4
  $ intensities: num [1:8] 0.0344 0.1375 0.2062 0.4812 0.2406 ...
  $ density    : num [1:8] 0.0344 0.1375 0.2062 0.4812 0.2406 ...
  $ mids       : num [1:8] -2.2704 -1.6885 -1.1065 -0.5246 0.0573 ...
  $ xname      : chr "x"
  $ equidist   : logi TRUE
  - attr(*, "class")= chr "histogram"

As usual:  Clear, concise, and useful!  Thanks!

    cheers,

        Rolf

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to