Re: [Rd] Two submitted packages

From: Deepayan Sarkar <deepayan.sarkar_at_gmail.com>
Date: Tue 05 Sep 2006 - 21:09:22 GMT

On 9/4/06, Richard M. Heiberger <rmh@temple.edu> wrote:
> ## This example runs in R 2.3.1 and does not run in R 2.4.1. I am
> ## raising it here for two questions: one on how to debug functions
> ## inside a namespace, the other on how to control clipping.
>
> tmp <- data.frame(x=1:5, y=1:5, a=factor(c(1,1,1,1,1), levels=1:4))
> xyplot(y ~ x,
> data=tmp, ylim=c(1.5,4.5),
> panel=function(x,y, ...) {
> cpv <- current.viewport()
> cpv$clip <- "off"
> pushViewport(cpv)
> panel.xyplot(x, y, ...)
> popViewport()
> })
>
> ## R version 2.4.0 Under development (unstable) (2006-08-14 r38872)
> ## gives the error message
> Error in grid.Call.graphics("L_setviewport", pvp, TRUE) :
> LOGICAL() can only be applied to a 'logical', not a 'character'
> >
>
> ## Question 1. How do I place a trace() on grid.Call.graphics to make
>
> [snipped]
>
>
> ## Question 2. How do I control clipping from within a panel
> ## function? In 2.3.1, both of the following statements run without
> ## error. Neither of them turns clipping off.
> ##
> ## In 2.4.0, the "off" statement gives the error message above. The
> ## FALSE statement runs without error, but it didn't turn clipping off.
>
> xyplot(y ~ x | a,
> data=tmp, ylim=c(1.5,4.5),
> panel=function(x,y, ...) {
> cpv <- current.viewport()
> cpv$clip <- "off"
> pushViewport(cpv)
> panel.xyplot(x, y, ...)
> popViewport()
> },
> layout=c(2,2))
>
> xyplot(y ~ x | a,
> data=tmp, ylim=c(1.5,4.5),
> panel=function(x,y, ...) {
> cpv <- current.viewport()
> cpv$clip <- FALSE
> pushViewport(cpv)
> panel.xyplot(x, y, ...)
> popViewport()
> },
> layout=c(2,2))
>
>
> ## ?viewport in 2.4.0 says
> ## clip
> ##
> ## One of "on", "inherit", or "off", indicating whether to clip to the
> ## extent of this viewport, inherit the clipping region from the
> ## parent viewport, or turn clipping off altogether. For
> ## back-compatibility, a logical value of TRUE corresponds to "on" and
> ## FALSE corresponds to "inherit".
>
> ## Notice that "off" is current and FALSE is back-compatible, and
> ## "off" is the value that causes the error.
>
> ## What is the correct way to turn off clipping?

I don't believe there /is/ a documented way.

> ## The way that I would like to use is something on the order of
>
> xyplot(y ~ x | a,
> data=tmp, ylim=c(1.5,4.5),
> panel=function(x,y, ...) {
> panel.xyplot(x, y, ...,
> par.settings = list(clip = list(panel = "off")))
> },
> layout=c(2,2))
>
> ## I believe par.settings is currently valid only in xyplot() and not
> ## valid in panel functions. Is my understanding correct?

Yes.

> ## Can the
> ## behavior be changed?

In the original design of lattice, no. In the current design, two separate viewports exist for each panel (which is why you can use trellis.focus with clipping turned off). So, there might be a way to switch to that. A reasonably clean approach might be to do the following:

xyplot(y ~ x,

       data=tmp, ylim=c(1.5,4.5),
       panel=function(x, y, ...) {
           upViewport()
           downViewport(trellis.vpname("panel",
                                       row = 1, column = 1, clip.off = TRUE))
           panel.xyplot(x, y, ...)
           panel.points(1.4, 1.4)
      })

Unfortunately, there is currently no easy way to find out which column and row the current panel occupies. I plan to make some changes before R 2.4.0 is released that should expose that information, so please try again in a few weeks.

> ## The following statement works correctly in both 2.3.1 and 2.4.0.
> ## This statement controls clipping for the entire xyplot, not just
> ## for the single statement within the panel function.
>
> xyplot(y ~ x | a,
> data=tmp, ylim=c(1.5,4.5),
> par.settings = list(clip = list(panel = "off")),
> layout=c(2,2))

I'm curious to know why this functionality is not enough.

Deepayan



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Sep 06 07:13:56 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 06 Sep 2006 - 11:39:29 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.