[R] Plotting multiple xyplots in same page

Duncan Mackay mackay at northnet.com.au
Thu Feb 14 01:35:22 CET 2013


Hi Lisa

You can use the page function of xyplot to do this

xy <-
xyplot(decrease ~ treatment, OrchardSprays,
        groups = rowpos, type = "a",
            page     = function(n){
                         grid.text(LETTERS[j],
                         y = 0.95,
                         x = 0.01,
                         default.units = "npc",
                         just = c("left"),
                         gp = gpar(fontsize = 12) )
                       },
        auto.key = list(x = 0.2, y = 0.9,
        cex = 0.75, points = FALSE, lines = TRUE))

j = 1
print(xy, pos = c(0.0, 0.0, 0.5, 0.5), more = TRUE)
j = j+1
print(xy, pos = c(0.0, 0.5, 0.5, 1.0), more = TRUE)
j = j+1
print(xy, pos = c(0.5, 0.0, 1.0, 0.5), more = TRUE)
j = j+1
print(xy, pos = c(0.5, 0.5, 1.0, 1.0), more = FALSE)

amend x, y  and grid::gp positions/values to suit

There are other ways using trellis.focus and the package grid

HTH

Regards

Duncan

Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2351
Email: home: mackay at northnet.com.au


At 08:28 14/02/2013, you wrote:
>Dear Rhelp,
>
>I would like to have 6 xyplots in the same page.  Similar to 
>(par(mfrow=c(3,3))
>Found this example on the R archives.
>library(lattice)
>trellis.par.set(theme = col.whitebg())
>xy <- xyplot(decrease ~ treatment, OrchardSprays,
>               groups = rowpos, type = "a",
>               auto.key = list(x = 0.2, y = 0.9,
>                 cex = 0.75, points = FALSE, lines = TRUE))
>
>print(xy, pos = c(0.0, 0.0, 0.5, 0.5), more = TRUE)
>print(xy, pos = c(0.0, 0.5, 0.5, 1.0), more = TRUE)
>print(xy, pos = c(0.5, 0.0, 1.0, 0.5), more = TRUE)
>print(xy, pos = c(0.5, 0.5, 1.0, 1.0), more = FALSE)
>
>
>
>
>When I changed the print() to:
>
>  print(xy, pos=c(0.0,0.0,0.33,0.33),more = TRUE),
>the figure was not looking good.
>
>Also, is it possible to assign A, B, C,D, etc for each figure.
>
>
>
>a<- rnorm(1000,0,1)
>b<- rnorm(1000,0,2)
>c<- rnorm(1000,0,3)
>d<- rnorm(1000,0,4)
>par(mfrow=c(2,2))
>hist(a,main="")
>title(main="A",adj=0)
>hist(b,main="")
>title(main="B",adj=0)
>hist(c,main="")
>title(main="C",adj=0)
>hist(d,main="")
>title(main="D",adj=0)
>
>
>I tried this to xyplot, but it was not working.
>
>Please help me.
>
>Many thanks in advance,
>Lisa.
>
>______________________________________________
>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