Rのanimationパッケージを使ってみるテスト

正弦波.


library(animation)

wave <- function() {
  for(t in 1:100) {
    plot(function(x){ sin(x + 0.08 * pi * t) },
    -pi, 2*pi, xlab="x", ylab="sin(x)",
    col="blue", lwd=3)
  }
}

saveMovie(wave(), interval=0.05, moviename="wave",
  movietype="gif", outdir=getwd(),
  width=640, height=480)

ソースはこれだけ.wave()で位相が少しずつ異なる正弦波を100回plotしているだけ.簡単.


うねうね.こちらはGIFアニメで出力したところ5.3Mと巨大なファイルになってしまったので,試しにMPEGで出力させてみた.


library(animation)

wave2 <- function()
  x <- seq(-6*pi, 6*pi, length=100)
  y <- x
  for (t in 1:100) {
    z <- outer(x, y, function(x, y) {
      cos(sqrt(x*x + y*y) - 0.08 * pi * t)
    })
    persp(x, y, z, zlim=c(-3, 3), theta = 30, phi = 30,
      expand = 0.5, col = "green")
  }
}

saveMovie(wave2, interval=0.05, moviename="wave2",
  movietype="mpg", outdir=getwd(),
  width=640, height=480)

こちらも簡単.outer()やpersp()を使って三次元プロットをしている.