Hi
baptiste auguie wrote:
Thanks Felix and Paul. I had overlooked grid.grabExpr, assuming that
one had to draw on a device before grabbing the output.
Now I'm not sure if there's any difference between either solution,
I'll go for the shortest.
As Felix pointed out, one possible problem with the grid.gradExpr()
approach is that you get a copy of what was drawn on the current device,
which may be dependent on things like how big the current device is,
what fonts it uses, etc.
The drawDetails() approach means that 'lattice' will calculate what to
draw every time you want to draw, so it should adapt to different device
sizes and different device properties more gracefully.
On the other hand, the drawDetails() approach only records a VERY
high-level description of what you are drawing (a 'lattice' object), so
you cannot fiddle about with the low-level details of what you draw.
For example, following ...
latticeGrob <- function(p, ...){
grob(p=p, ..., cl="lattice")
}
drawDetails.lattice <- function(x, recording=FALSE){
lattice:::plot.trellis(x$p, newpage=FALSE)
}
p1 <- xyplot(1:10 ~ 1:10)
g1 <- latticeGrob(p1)
grid.draw(g1)
... grid.ls() gives you ...
> grid.ls()
GRID.lattice.53
... whereas the grid.gradExpr() approach records all of the bits and
pieces of the drawing, e.g., following ...
p1 <- xyplot(1:10 ~ 1:10)
g1 <- grid.grabExpr(print(p1))
grid.draw(g1)
... grid.ls() gives you ...
> grid.ls()
GRID.gTree.94
GRID.rect.85
plot1.xlab
plot1.ylab
GRID.segments.86
GRID.segments.87
GRID.text.88
GRID.segments.89
GRID.text.90
GRID.segments.91
GRID.points.92
GRID.rect.93
So it's a bit of a trade-off.
Paul
Best,
baptiste
On 22 March 2010 00:18, Felix Andrews <fe...@nfrac.org> wrote:
What's wrong with using grid.grabExpr?
p1 <- xyplot(1:10 ~ 1:10)
g1 <- grid.grabExpr(print(p1))
I can imagine there would be potential problems to do with the
plot-time aspect and layout calculations...
On 19 March 2010 21:51, baptiste auguie <baptiste.aug...@googlemail.com> wrote:
Dear list,
I'm trying to arrange various grid objects on a page using a
frameGrob. It works fine with basic grobs (textGrob, gTree, etc.), and
also with ggplot2 objects using the ggplotGrob() function. I am
however stuck with lattice. As far as I understand, lattice produces a
list of class trellis, which is eventually displayed using the
plot.trellis method. I am not sure if/how one can convert this list
into a high-level grob. I tried the following,
latticeGrob <- function(p, ...){
grob(p=p, ..., cl="lattice")
}
drawDetails.lattice <- function(x, recording=FALSE){
lattice:::plot.trellis(x$p)
}
p1 <- xyplot(1:10 ~ 1:10)
g1 <- latticeGrob(p1)
grid.draw(g1) # works fine
but,
fg <- frameGrob(layout = grid.layout(1,1))
fg <- placeGrob(fg, g1, row = 1, col = 1)
grid.draw(fg)
Error in UseMethod("depth") :
no applicable method for 'depth' applied to an object of class "NULL"
Ideas are most welcome,
Best regards,
baptiste
sessionInfo()
R version 2.10.1 RC (2009-12-06 r50690)
i386-apple-darwin9.8.0
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] grid tools stats graphics grDevices utils
datasets methods base
other attached packages:
[1] ggplot2_0.8.7 digest_0.4.1 reshape_0.8.3 plyr_0.1.9
proto_0.3-8 gridExtra_0.5 lattice_0.17-26 gtools_2.6.1
______________________________________________
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.
--
Felix Andrews / 安福立
Postdoctoral Fellow
Integrated Catchment Assessment and Management (iCAM) Centre
Fenner School of Environment and Society [Bldg 48a]
The Australian National University
Canberra ACT 0200 Australia
M: +61 410 400 963
T: + 61 2 6125 4670
E: felix.andr...@anu.edu.au
CRICOS Provider No. 00120C
--
http://www.neurofractal.org/felix/
______________________________________________
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.
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
p...@stat.auckland.ac.nz
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.