[R] Location of grobs etc on lattice output
john.maindonald at anu.edu.au
Sun Nov 21 23:35:02 CET 2004
I'm puzzled about side effects of trellis.unfocus():
The following runs without problem, though grid.text() does not
seem to do anything. (I'd thought that I had it working at one point.)
library(DAAG); library(lattice); library(grid)
cuckoos.strip <- stripplot(species ~ length, xlab="", data=cuckoos)
cuckoos.bw <- bwplot(species~length, xlab="Length of egg (mm)",
vp0 <- viewport(layout=grid.layout(2, 1))
vp1 <- viewport(layout.pos.row=1)
vp2 <- viewport(layout.pos.row=2)
# trellis.focus("panel", row=1, column=1, clip.off=TRUE)
grid.text("A", x=unit(0,"native"), y=unit(1.05,"native"),
# trellis.unfocus() ## & remove the following upViewport()
trellis.focus("panel", row=1, column=1, clip.off=TRUE)
grid.text("B", x=unit(0,"native"), y=unit(1.05,"native"),
If I remove the #'s, and remove the upViewport() that
follows the second #, I seem to lose the current tree,
as though the newpage=FALSE for the next print()
is ignored. Should I be able to do something like this?
Clearly I do not understand what happens when
trellis.focus() is invoked.
This seems an area where an effective GUI, with a
graphical display of the viewport tree, could be very
John Maindonald email: john.maindonald at anu.edu.au
phone : +61 2 (6125)3473 fax : +61 2(6125)5549
Centre for Bioinformation Science, Room 1194,
John Dedman Mathematical Sciences Building (Building 27)
Australian National University, Canberra ACT 0200.
On 21 Nov 2004, at 3:41 PM, Deepayan Sarkar wrote:
> 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
> It hasn't had much testing, so I would appreciate reports of things
> should be doable easily but isn't.
>> library(lattice); library(grid)
>> pushViewport(viewport(layout=grid.layout(2, 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.
>> 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
> trellis.focus("panel", row=1, column=1, clip.off=TRUE)
> will put you in the plot region (panel), but will switch off clipping
> you can write text outside.
> You can also now control the amount of space between the axis and
> legend, see
> R-help at stat.math.ethz.ch mailing list
> PLEASE do read the posting guide!
More information about the R-help