Hi
Gustaf Rydevik wrote: > Hi all, > > I'm trying to generate a plot containing a scatterplot, with marginal > densityplots for x and y. > However, when I try to generate a vertical densityplot, I get the > message "warning: can't clip to rotated viewport", and nothing shows > up. I'm probably misunderstanding how viewports are meant to be used, > so if someone could give me a hint, I'd be most grateful. > my system is R 2.5.0 (stuck, and can't upgrade for now) and windoms xp. The warning says it all unfortunately; R only clips to rectangular regions, so if you take a rectangle (viewport) and rotate it, and try to clip to it, R can't cope (it's lattice that is trying to clip to some of its viewports BTW). Of course, R could be slightly smarter and check whether the rotated rectangle is still a rectangle (aligned with the x- and y-axes). I will look at a fix for this in the development version of R. Unfortunately, there are still some problems with your example, because ... pushViewport(viewport(layout.pos.row=2,layout.pos.col=2,angle=270)) ... will not do what you want. The layout.pos.row/col mean that angle (along with x, y, width, and height) is ignored. Instead you could try ... pushViewport(viewport(layout.pos.row=2,layout.pos.col=2)) pushViewport(viewport(width=convertUnit(unit(1, "npc"), "npc", "y", "dimension", "x"), height=convertUnit(unit(1, "npc"), "npc", "x", "dimension", "y"), angle=270)) ... (all that conversion is necessary because otherwise the rotated viewport is NOT the size you probably want). However, even then the result is not very nice because you have a lot of work still to do to make the x- and y-scales on the three plots line up (not just a matter of controlling the scales on each plot, but also a matter of getting the plot margins the same size). If it was me, I would be starting to think about writing something from scratch in grid at this point ... Paul > many thanks in advance, > > Gustaf > > example: > -------------------------- > library(lattice) > library(grid) > x<-rnorm(20) > y<-rnorm(20) > graph.layout<-grid.layout(nrow=2,ncol=2,widths=unit.c(unit(2,"null"),unit(1,"null")),heights=unit.c(unit(1,"null"),unit(2,"null"))) > graph.view<-viewport(layout=graph.layout,name="root") > grid.newpage() > pushViewport(gap.view) > pushViewport(viewport(layout.pos.row=2,layout.pos.col=1)) > print(xyplot(x~y),newpage=FALSE) > popViewport() > pushViewport(viewport(layout.pos.row=1,layout.pos.col=1)) > print(densityplot(x),newpage=FALSE) > popViewport() > pushViewport(viewport(layout.pos.row=2,layout.pos.col=2,angle=270)) > print(densityplot(y),newpage=FALSE) ### I Get the warning message here. > ---------------------------------- > -- Dr Paul Murrell Department of Statistics The University of Auckland Private Bag 92019 Auckland New Zealand 64 9 3737599 x85392 [EMAIL PROTECTED] http://www.stat.auckland.ac.nz/~paul/ ______________________________________________ R-help@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.