[R] animated grid graphics
Unternährer Thomas
unthomas at student.ethz.ch
Tue Jul 21 14:18:55 CEST 2009
I need to make a fairly complex animated graphic and decided to use grid for it.
A very simple example of what I need:
##==============================================================================
library(grid)
grid.newpage()
pushViewport(plotViewport())
pushViewport(viewport(xscale = extendrange(c(0, 100)),
yscale = extendrange(c(0, 100))))
grid.xaxis()
grid.yaxis()
rectNames <- paste("r", 1:100, sep = "")
for (i in 1:100) {
grid.rect(x = unit(sample(0:100, 1), "native"),
y = unit(sample(0:100, 1), "native"),
width = 0.1, height = 0.1, name = rectNames[i])
}
for (i in 1:100) {
grid.remove(rectNames[i])
}
##==============================================================================
The problem here is that removing grid objects is very slow, at least in the
way I use it. Is it possible to remove all objects at once (or to use some
technique similar to double buffering)?
A second way to do it would be to remove a viewport and all its children from
the current viewport tree. Is this possible? Example:
##==============================================================================
grid.newpage()
pushViewport(plotViewport())
pushViewport(viewport(xscale = extendrange(c(0, 100)),
yscale = extendrange(c(0, 100))))
grid.xaxis()
grid.yaxis()
pushViewport(viewport(xscale = extendrange(c(0, 100)),
yscale = extendrange(c(0, 100)),
name = "plotVP"))
for (i in 1:100) {
grid.rect(x = unit(sample(0:100, 1), "native"),
y = unit(sample(0:100, 1), "native"),
width = 0.1, height = 0.1, name = paste("r", i, sep = ""))
}
*remove("plotVP")*??
##==============================================================================
Another approach would be to save every single plot as an image and use
something like imagemagick to produce an animated gif, but I was just wondering
if it's possible by using grid only (no need to use it outside of R).
Thanks in advance
Thomas
More information about the R-help
mailing list