[R] Plotting multiple xyplots in same page

Lisa Daniel lisadaniel2013 at yahoo.com
Thu Feb 14 04:00:04 CET 2013


Dear Duncan,

Thank you.  It helped a lot.
I was able to get it correct though I couldn't get it working under simpleTheme() (for publication purpose).

#this gave me the correct format.
library(grid)
library(lattice)
xy <-xyplot(decrease ~ treatment, OrchardSprays,
    main= "Some plot",
        groups = rowpos, type = "a",
            page     = function(n){
                         grid.text(LETTERS[j],
                         y = 0.95,
                         x = 0.15,
                         default.units = "npc",
                         just = c("left"),
                         gp = gpar(fontsize = 12,fontface="bold") )
                       },
    par.settings = list(
         layout.heights = list(main = 1.2,
                       sub  = 0,
                       axis.top = 0.2,
                       top.padding  = 0.1,
                       bottom.padding = 0) ),
        auto.key = list(x = 0.2, y = 0.9,
        cex = 0.75, points = FALSE, lines = TRUE)) 
#pdf("trial.pdf",width=12)
#jpeg("trial.jpeg",quality=100,width=680,height=480)
j=1
print(xy, pos = c(0.0, 0.5, 0.33, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.33, 0.5, 0.66, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.66, 0.5, 0.99, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.0, 0.0, 0.33, 0.5), more = TRUE)
j=j+1
print(xy, pos = c(0.33, 0.0, 0.66, 0.5), more = TRUE)
j=j+1
print(xy, pos = c(0.66, 0.0, 0.99, 0.5), more = FALSE)
#dev.off()


# I tried the same with simpleTheme(), but I am not getting it correct, (the lines are colored):

pset <- simpleTheme(lty = 1:8, col="black",lwd=2)  
xy <-xyplot(decrease ~ treatment, OrchardSprays,
    main= "Some plot",
        groups = rowpos, type = "a",
            page     = function(n){
                         grid.text(LETTERS[j],
                         y = 0.95,
                         x = 0.15,
                         default.units = "npc",
                         just = c("left"),
                         gp = gpar(fontsize = 12,fontface="bold") )
                       },
    par.settings = list(pset,
         layout.heights = list(main = 1.2,
                       sub  = 0,
                       axis.top = 0.2,
                       top.padding  = 0.1,
                       bottom.padding = 0) ),
        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.5, 0.33, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.33, 0.5, 0.66, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.66, 0.5, 0.99, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.0, 0.0, 0.33, 0.5), more = TRUE)
j=j+1
print(xy, pos = c(0.33, 0.0, 0.66, 0.5), more = TRUE)
j=j+1
print(xy, pos = c(0.66, 0.0, 0.99, 0.5), more = FALSE)


#the output from the below code is B&W, but space between title and figure not corrected

pset <- simpleTheme(lty = 1:8, col="black",lwd=2)  
xy <-xyplot(decrease ~ treatment, OrchardSprays,
    main= "Some plot",
        groups = rowpos, type = "a",
            page     = function(n){
                         grid.text(LETTERS[j],
                         y = 0.95,
                         x = 0.15,
                         default.units = "npc",
                         just = c("left"),
                         gp = gpar(fontsize = 12,fontface="bold") )
                       },
    par.settings = pset,
        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.5, 0.33, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.33, 0.5, 0.66, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.66, 0.5, 0.99, 1.0), more = TRUE)
j=j+1
print(xy, pos = c(0.0, 0.0, 0.33, 0.5), more = TRUE)
j=j+1
print(xy, pos = c(0.33, 0.0, 0.66, 0.5), more = TRUE)
j=j+1
print(xy, pos = c(0.66, 0.0, 0.99, 0.5), more = FALSE)


Also, I would like to create a main title for the first row and second row of figures.
Many thanks in advance,
Lisa


----- Original Message -----
From: Duncan Mackay <mackay at northnet.com.au>
To: Lisa Daniel <lisadaniel2013 at yahoo.com>; r-help-r-project.org <r-help at r-project.org>
Cc: 
Sent: Wednesday, February 13, 2013 7:53 PM
Subject: Re: [R] Plotting multiple xyplots in same page

Hi Lisa

have a look at par.settings in ?xyplot

trellis.par.get() shows the settings

trellis.par.get()[[27]]
$left
$left$tck
[1] 1

$left$pad1
[1] 1

$left$pad2
[1] 1


$top
$top$tck
[1] 1

$top$pad1
[1] 1

$top$pad2
[1] 1


$right
$right$tck
[1] 1

$right$pad1
[1] 1

$right$pad2
[1] 1


$bottom
$bottom$tck
[1] 1

$bottom$pad1
[1] 1

$bottom$pad2
[1] 1

as an example:

par.settings = list(
layout.heights = list(main = 0,
                       sub  = 0,
                       axis.top = 0.2,
                       top.padding  = 0,
                       bottom.padding = 0)    )

HTH

Duncan

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




At 09:10 14/02/2013, you wrote:
>Dear Rhelp,
>
>I was able to plot 6 figures in one page.  I do need help in 
>reducing the space between the title and the plot and assigning 
>A,B,C,D,E,F to each figure
>library(lattice)
>trellis.par.set(theme = col.whitebg())
>xy <- xyplot(decrease ~ treatment, OrchardSprays,
>         main="Some plot",
>               groups = rowpos, type = "a",
>               auto.key = list(x = 0.2, y = 0.9,
>                 cex = 0.52, points = FALSE, lines = TRUE))
>
>
>print(xy, pos = c(0.0, 0.5, 0.33, 1.0), more = TRUE)
>print(xy, pos = c(0.33, 0.5, 0.66, 1.0), more = TRUE)
>print(xy, pos = c(0.66, 0.5, 0.99, 1.0), more = TRUE)
>print(xy, pos = c(0.0, 0.0, 0.33, 0.5), more = TRUE)
>print(xy, pos = c(0.33, 0.0, 0.66, 0.5), more = TRUE)
>print(xy, pos = c(0.66, 0.0, 0.99, 0.5), more = FALSE)
>
>Thanks in advance,
>Lisa
>
>
>
>----- Original Message -----
>From: Lisa Daniel <lisadaniel2013 at yahoo.com>
>To: "r-help at r-project.org" <r-help at r-project.org>
>Cc:
>Sent: Wednesday, February 13, 2013 5:28 PM
>Subject: Plotting multiple xyplots in same page
>
>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