R内でいくつかのプロットをつなぎ合わせて「映画」を作成する簡単な方法はありますか?
7 に答える
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 で置き換えることができます。
Yihui Xieによって作成されたアニメーションパッケージまたはEBImage バイオコンダクター パッケージ (?animate) を見てください。
これは、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、PhDに帰属します。
R スクリプトをより大きな Perl/Python/etc. スクリプトを使用すると、お気に入りのコマンドライン イメージ スティッチング ツールを使用してグラフをスティッチングできます。
R スクリプトをラッパー スクリプトで実行するには、R CMD BATCH
メソッドを使用します。
XNview(フリーウェアのグラフィックビューア)のスライドショーの作成機能を使用して、いくつかのムービーを作成しました。空間データを使用して時間の経過に伴う傾向を示したかったので、順番に名前を付けた一連のプロットを作成しました[paste()はあらゆる種類の命名カリステシスの友です]次に、それらをXNviewsスライドショーダイアログにロードし、いくつかのタイマー変数を設定しました。出来上がり。それを行う方法と実行可能なグラフィックを作成する方法を学ぶのに5分ほどかかりました。
Rでそれが可能かどうかはわかりません.RからのデータポイントがMySQLデータベースにエクスポートされ、Flex/Flashアプリケーションがそれらのデータポイントを取得してアニメーション化された視覚化を行ったプロジェクトを一度行いました..
HDF5 ファイルからアニメーション GIF "movie" を作成する完全な例を次に示します。データは、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)