web-dev-qa-db-ja.com

Rの一連のプロットからムービーを作成する

R内で複数のプロットをつなぎ合わせて「ムービー」を作成する簡単な方法はありますか?

47
Ryan R. Rosario

Rヘルプを使用して見つけた1つの方法を次に示します。

個々の画像フレームを作成するには:

jpeg("/tmp/foo%02d.jpg")
for (i in 1:5) {
  my.plot(i)
}
dev.off()

ムービーを作成するには、最初に ImageMagick をインストールします。次に、次の関数を呼び出します(これは、ImageMagickの一部と思われる "convert"を呼び出します)。

make.mov <- function(){
     unlink("plot.mpg")
     system("convert -delay 0.5 plot*.jpg plot.mpg")
}

または、この 記事 で説明されているffmpeg関数を使用してみてください(これにより、結果がよりきれいになります):ffmpeg -r 25 -qscale 2 -i tmp/foo%02d.jpg output.mp4

少し手を加える必要があるかもしれませんが、すべてがインストールされると、これは非常に簡単に思えました。

もちろん、「jpg」または「jpeg」が表示される場所であれば、好みに合わせてGIFまたはPNGを置き換えることができます。

40
Ryan R. Rosario

Yihui Xie によって作成された animation パッケージまたは EBImage bioconductor package(?animate)のいずれかをご覧ください。

14
Paolo

CaToolsライブラリのwrite.gif関数でもこれを行うことができると思います。最初にグラフをマルチフレーム画像にする必要があります。どうすればいいのかわかりません。誰でも?ビューラー?

アニメーションGIFの典型的な例は、私が書いていないが、私が書いたこのコードです ブログについて 少し前:

library(fields) # for tim.colors
library(caTools) # for write.gif
m = 400 # grid size
C = complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ), imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C = matrix(C,m,m)

Z = 0
X = array(0, c(m,m,20))
for (k in 1:20) {
Z = Z^2+C
X[,,k] = exp(-abs(Z))
}

image(X[,,k], col=tim.colors(256)) # show final image in R
write.gif(X, 'Mandelbrot.gif', col=tim.colors(256), delay=100)

コードクレジットは、Jarek Tuszynski博士に与えられます。

10
JD Long

Rスクリプトを大きなPerl/Python /などでラップする場合。スクリプトを使用すると、お気に入りのコマンドラインイメージステッチツールでグラフをステッチできます。

ラッパースクリプトを使用してRスクリプトを実行するには、 R CMD BATCH メソッド。

2
Alex Reynolds

XNviewの(フリーウェアのグラフィックビューア)Create Slideshow機能を使用していくつかのムービーを作成しました。空間データを使用して時系列のトレンドを表示したかったので、一連のプロットを作成し、順番に[paste()はあらゆる種類の命名法の友人です]、XNviewsスライドショーダイアログにロードして、いくつかのタイマー変数を設定しました。出来上がり。 5分間かけて、その方法を学び、実行可能なグラフィックを作成しました。

0
kpierce8

次に、HDF5ファイルからアニメーションGIF「映画」を作成する完全な例を示します。データは、3次元配列[Nframes] [Nrows] [Ncolumns]のHDFデータセットである必要があります。

#
# be sure to be run as Administrator to install new packages
#
source("http://bioconductor.org/biocLite.R")
biocLite("rhdf5")
install.packages('caTools')
install.packages('fields')

library(caTools)
library(fields)
library(rhdf5)

x = h5read(file="mydata.h5",name="/Images")
write.gif(x,"movie1.gif",col=Rainbow,delay=10,flip=TRUE)
0
Mark Lakata

Rでそれが可能かどうかはわかりません。RからのデータポイントがMySQLデータベースにエクスポートされ、Flex/Flashアプリケーションがそれらのデータポイントをピックアップし、アニメーション化された視覚化を行ったときに一度プロジェクトを行いました。

0
Sri