[R] aligning column of xyplots and removing space between them

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue 11 Oct 2005 - 17:43:01 EST


The code below displays three graphs in three rows and one column but:

  1. I want to remove the space between the graphs (I tried playing with position= arg to print.trellis but it seems quite difficult to get the right values and all my attempts had space between them or had overlapping graphs. Is there a better way to do this?
  2. the widths of the plots are not the same even though I specified the same xlim= to them all. How do I make them the same?
  3. how do I get rid of the ticks at the top of the bottom plot?
  4. the bottom graph is supposed to plot 1:3 against itself but the third point is not showing even though I specified ylim = c(0,3). Must I specify ylim = c(0,3+1) or is there a better way?

Here is the code (its a modified version of some code that I previously posted regarding a different question):

### everything from here to the grid.newpage line is just
### to set up the viewports for the graphs so you
### can just go to the comment that says
### 'relevant part starts here'

library(grid)
library(lattice)
trellis.par.set(theme = col.whitebg())

grid.newpage()

pushLayout <- function(nr, nc, ..., name="layout") {   pushViewport(viewport(layout=grid.layout(nr, nc, ...), name=name))   for (i in 1:nr) {
    for (j in 1:nc) {

      pushViewport(viewport(layout.pos.row=i, layout.pos.col=j))
      upViewport()

    }
  }
  upViewport()
}

with.vpPath <-
with.viewport <- function(data, expr, ...) {

      # if data is a vpPath it cannot be ROOT since NULL will not dispatch here
      depth <- if (data$name == "ROOT") 0 else downViewport(data$name)
      result <- eval.parent(substitute(expr))
      upViewport(depth)
      invisible(result)

}

grid.newpage()

# n and nr are number of cells and rows
n <- nr <- 3
nc <- 1 # must be 1

heights <- unit(c(2, rep(1, nr-1)), "null") downViewport(pushLayout(nr, nc, heights = heights))

vpt <- current.vpTree(all = FALSE)

### relevant part starts here

#########################

xlab <- main <- function(x) if (x) "v"
for(k in 1:n) with(vpt$children[[k]],

        print( xyplot(v ~ v, list(v = 1:k), xlab = xlab(k == n),
	xlim = c(0,n), ylim = c(0,n), main = main(k == 1),
	scales = list(x = list(draw = k == n), y = list(alternating = 3))),
	newpage = FALSE)

)

R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Tue Oct 11 18:03:23 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:40:41 EST