星期四, 五月 17, 2012

尝试用animation包来玩GIF动画


谢益辉创建的这个animation包实在是很好玩,上面这个GIF动画就是用lattic包绘制的静态图形构建的。要在R里面玩动画除了要安装animation包之外,还需要安装配套软件。例如安装ImageMagick,以方便生成GIF文件。动画生成原理很简单,基本上就是在saveGIF里面嵌套一些循环绘图的代码,但要注意的是:对于lattice或是ggplot2绘图命令,最后一定要使用print,不然出不了图。另外要在设置参数里面写清楚ImageMagick的安装路径。

library(animation)
library(lattice)
 saveGIF({
    ani.options(interval=.1,
                convert = shQuote('d:/program files/ImageMagick-6.7.6-Q16/convert.exe'))
 
    for (i in seq(0,360,by=5)) {
        p <- wireframe(volcano, shade = TRUE,
                  aspect = c(61/87, 0.4),
                  light.source = c(10,0,10),
                  screen = list(z = i, x = -60)) 
    print(p)
        }
})
下面一张动画是模拟森林火灾。首先在森林中心点燃一棵树,然后周围的树会以一定的概率被影响到,最后烧过的树以灰色表示。挺好玩的模型。该模型的原始代码可以从《Introduction to Scientific Programming and Simulation Using R》一书中找到。我只不过修改了一下颜色并生成了动画。最后的代码可以看这里

最多好玩的动画可以从作者的官方网站找到。

没有评论:

发表评论