[R] animation without intermediate files?
Martin Maechler
maechler at stat.math.ethz.ch
Tue Jan 25 09:59:03 CET 2005
>>>>> "Paul" == Paul Murrell <p.murrell at auckland.ac.nz>
>>>>> on Tue, 25 Jan 2005 13:40:15 +1300 writes:
Paul> Hi
Paul> Cari G Kaufman wrote:
>> Hello,
>>
>> Does anyone know how to make "movies" in R by making a sequence of plots?
>> I'd like to animate a long trajectory for exploratory purposes only,
>> without creating a bunch of image files and then using another program to
>> string them together. In Splus I would do this using double.buffer() to
>> eliminate the flickering caused by replotting. For instance, with a 2-D
>> trajectory in vectors x and y I would use the following:
>>
>> motif()
>> double.buffer("back")
>> for (i in 1:length(x)) {
>> plot(x[i], y[i], xlim=range(x), ylim=range(y))
>> double.buffer("copy")
>> }
>> double.buffer("front")
>>
>> I haven't found an equivalent function to double.buffer in R. I tried
>> playing around with dev.set() and dev.copy() but so far with no success
>> (still flickers).
Paul> Double buffering is only currently an option on the Windows graphics
Paul> device (and there it is "on" by default). So something like ...
Paul> x <- rnorm(100)
Paul> for (i in 1:100)
Paul> plot(1:i, x[1:i], xlim=c(0, 100), ylim=c(-4, 4), pch=16, cex=2)
Paul> is already "smooth"
well, sorry Paul, but not for my definition of "smooth"!
Instead,
n <- 100
plot(1,1, xlim=c(0,n), ylim=c(-4,4), type="n")
x <- rnorm(n)
for (i in 1:n) { points(i, x[i], pch=16, cex=2); Sys.sleep(0.02) }
comes much closer to my version of "smooth" ;-)
Martin
More information about the R-help
mailing list