「animation」パッケージと「jpeg」パッケージを利用してjpgファイルからGIFアニメーションを作成する例です。実行コマンドではplotコマンドの出力をGIFアニメーションで出力する方法を合わせて紹介します。
「animation」パッケージを利用したパッケージにはggplot2のプロットをアニメーション化する「gganimate」パッケージがあります。
・「gganimate」パッケージの紹介
https://www.karada-good.net/analyticsr/r-401/
パッケージバージョンは「animation」は2.7。「jpeg」は0.1-9。実行コマンドはwindows 11のR version 4.1.3で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール
install.packages("animation")
install.packages("jpeg")
必要なソフトウェアのインストール
GIFアニメーションの出力に必要なImageMagickのインストール方法です。Macはtar.gz形式のアーカイブ・バイナリ・ファイルをダウンロードし、ホームフォルダに保存後、下記コマンドをターミナルで実行してください。
###ImageMagick#####
#http://imagemagick.org/script/binary-releases.php
cd $HOME
tar xvzf ImageMagick-x86_64-apple-darwin15.2.0.tar.gz
export MAGICK_HOME="$HOME/ImageMagick-6.9.3"
export PATH="$MAGICK_HOME/bin:$PATH"
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"
windowsは実行ファイルで用意されているので、クリックでインストールが可能です。
・ImageMagick
http://imagemagick.org/script/binary-releases.php
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。両パッケージには多くの機能が収録されています。
#パッケージの読み込み
library("animation")
library("jpeg")
library("tcltk")
#アニメーションgifを保存:animation::saveGIFコマンド
#画像の切替間隔(秒):intervalオプション
#ファイル名:movie.nameオプション
#作業フォルダに出力されます
saveGIF({
#繰り返し回数を設定する
for (i in 1:5){
#処理内容を記述する
plot(runif(10), ylim = c(0,1))
}
}, interval = 1.0, movie.name = "TEST.gif")
#MP4で保存:animation::saveVideoコマンド
#ffmpegが必要:http://ffmpeg.org/download.html
#画像の切替間隔(秒):intervalオプション
#ファイル名:video.nameオプション
#作業フォルダに出力されます
saveVideo({
#繰り返し回数を設定する
for (i in 1:5){
#処理内容を記述する
plot(runif(10), ylim = c(0,1))
}
}, interval = 1.0, video.name = "TEST.html")
#アニメーションHTMLを保存:animation::saveHTMLコマンド
#画像の切替間隔(秒):intervalオプション
#ファイル名:htmlfileオプション
#作業フォルダに出力されます
saveHTML({
#繰り返し回数を設定する
for (i in 1:5){
#処理内容を記述する
plot(runif(10), ylim = c(0,1))
}
}, interval = 1.0, htmlfile = "TEST.html")
###「jpeg」パッケージと連携して写真をGIFアニメーション化#####
#jpgファイルの保存フォルダを指定
OpenFiles <- paste(as.character(tkchooseDirectory(title = "フォルダを選択"), sep = "", collapse =""))
#保存フォルダを作業フォルダに変更
setwd(OpenFiles)
#フォルダ内のファイルを取得
ItemList <- list.files(path = OpenFiles)
#gifアニメーションを作成
par(mar = c(0, 0, 0, 0))
par(oma = c(0, 0, 0, 0))
saveGIF(
for (i in seq(length(ItemList))){
PlotJpg <- readJPEG(ItemList[i])
plot(0:1, 0:1, type = "n", axes = FALSE, xlab = "", ylab = "", asp = 1)
rasterImage(PlotJpg, 0, 1, 1, 0)
},
interval = 1.0, movie.name = "Animetion.gif")
出力例
・saveGIFコマンド
・「jpeg」パッケージと連携して写真をGIFアニメーション化
少しでも、あなたのウェブや実験の解析が楽になりますように!!