[R] Location of grobs etc on lattice output

Deepayan Sarkar deepayan at stat.wisc.edu
Sun Nov 21 05:41:31 CET 2004


On Saturday 20 November 2004 19:41, John Maindonald wrote:
> Is there any way, after use of print.trellis(), to obtain the
> co-ordinates of the plot region, e.g., in what are then the
> native co-ordinates?

Have you read help(trellis.focus)? This is new in 2.0.0 and the 
recommended API for interacting with lattice plots (you can of course 
use grid tools directly, but details are more likely to change at that 
level). 

It hasn't had much testing, so I would appreciate reports of things that 
should be doable easily but isn't.

> e.g.
>   library(DAAG)
>   library(lattice); library(grid)
>   data(cuckoos)
>   pushViewport(viewport(layout=grid.layout(2, 1)))
>   pushViewport(viewport(layout.pos.row=1))
>   cuckoos.strip <- stripplot(species ~ length, data=cuckoos)
>   print(cuckoos.strip, newpage=FALSE)
>   grid.text("A", x=unit(0.18,"native"), y=unit(0.925,"native"))
>    # This works, but is fiddly, and needs rejigging if width
>    # or fontsize are changed.
>   popViewport(1)
>
> An alternative would of course be to access the co-ordinate
> system used by the lattice function for locating the panels,
> or for locating labelling.
>
> As in the example above, I have been using grid.text() to
> position text outside the plot region, but closer to the "top"
> axis than the legend parameter to the lattice function will
> allow.

trellis.focus("panel", row=1, column=1, clip.off=TRUE)

will put you in the plot region (panel), but will switch off clipping so 
you can write text outside.

You can also now control the amount of space between the axis and 
legend, see

str(trellis.par.get("layout.heights"))

Deepayan




More information about the R-help mailing list