[R] Problem with viewports, print.trellis and more/newpage

Deepayan Sarkar deepayan.sarkar at gmail.com
Thu May 14 23:15:15 CEST 2009


On Thu, May 14, 2009 at 1:58 PM, Sebastien Bihorel
<sebastien.bihorel at cognigencorp.com> wrote:
> Dear R-users,
>
> I have got the following problem. I need to create 4x2 arrays of xyplot's on
> several pages. The plots are created within a loop and plotted using the
> print function. It seems that I cannot find the proper grid syntax with my
> viewports, and the more/newpage arguments.
>
> The following script is a simplification but hopefully will suffice to
> illustrate my problem. Any suggestion from the list would be greatly
> appreciated.

Without looking at it in detail, here's one bit of advice that might
help: if you are using pushViewport(), don't use 'more', use only
'newpage', and preferably don't use 'split' either. In particular, if
you are using 'more', the first print.trellis() call will always start
a new page, and your viewport will be lost.

-Deepayan

>
> Sebastien
>
> #########
>
> library(lattice)
>
> foo <- data.frame(x=1:10,y=1:10)
>
> for (i in 1:4) {
>  #isnewpage <-     FALSE
>
>  plots <- xyplot(y~x,data=foo)
>
>  pushViewport(viewport(x=0,
>                       y=0,
>                       width=1,
>                       height=0.95,
>                       just=c(0,0)))
>
>  print(plots, split=c(1,1,2,4), more=T)#, newpage=isnewpage)
>  print(plots, split=c(2,1,2,4), more=T)#, newpage=isnewpage)
>  print(plots, split=c(1,2,2,4), more=T)#, newpage=isnewpage)
>  print(plots, split=c(2,2,2,4), more=T)#, newpage=isnewpage)
>  print(plots, split=c(1,3,2,4), more=T)#, newpage=isnewpage)
>  print(plots, split=c(2,3,2,4), more=T)#, newpage=isnewpage)
>  print(plots, split=c(1,4,2,4), more=T)#, newpage=isnewpage)
>  print(plots, split=c(2,4,2,4), more=F)#, newpage=isnewpage)
>     popViewport()
>     pushViewport(viewport(x=0,
>                       y=0.95,
>                       width=1,
>                       height=0.05,
>                       just=c(0,0)))
>     grid.text(label = i,
>               just = c("centre","centre"),
>               gp = gpar(fontsize = 10, font = 2))
>     popViewport()
>     # Updates isnewpage
>  # isnewpage <- TRUE
> }
> --
> *Sebastien Bihorel, PharmD, PhD*
> PKPD Scientist
> Cognigen Corp
> Email: sebastien.bihorel at cognigencorp.com
> <mailto:sebastien.bihorel at cognigencorp.com>
> Phone: (716) 633-3463 ext. 323
>
> ______________________________________________
> R-help at 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.
>




More information about the R-help mailing list