本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

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

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

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.