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

From: Deepayan Sarkar <deepayan.sarkar_at_gmail.com>
Date: Wed 12 Oct 2005 - 06:42:31 EST

On 10/11/05, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
> 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?

Define

theme.novpadding <- list(layout.heights =

    list(top.padding = 0,

         main.key.padding = 0,
         key.axis.padding = 0,
         axis.xlab.padding = 0,
         xlab.key.padding = 0,
         key.sub.padding = 0,
         bottom.padding = 0))

and then add

par.settings = theme.novpadding

to all your xyplot calls.

> 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?

They seem to be the same for me, but they might be different if the y-axis labels are different. See the 'panel.width' argument in ?print.trellis.

> 3. how do I get rid of the ticks at the top of the bottom plot?

add

scales = list(x = list(relation = "free"))

> 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?

There's no better way. This behaviour is intentionally different from base graphics.

Here's a modified version of the last part of your code:

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),
       par.settings = theme.novpadding,
       scales = list(x = list(draw = k == n, relation = "free", c(1, 0)),
                         y = list(alternating = 3))),
       newpage = FALSE, panel.width = list(x = 4, units = "inches"))
)

-Deepayan



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 Wed Oct 12 06:49:32 2005

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