Rで解析:図や画像のGIFアニメーション作成例

Rの解析に役に立つ記事
スポンサーリンク

「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アニメーション化


少しでも、あなたのウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました