Rで解析:ggplot2のプロットを簡単アニメーション「gganimate」パッケージ


ggplot2のプロットを簡単にアニメーション化するパッケージの紹介です。html出力はパッケージのみで可能ですが、GIFアニメーション、mp4、swfの出力は指定ソフトウェアのインストールが必要です。

Macで必要な指定ソフトウェアは、tar.gz形式のアーカイブ・バイナリ・ファイルで提供されています。インストール方法は「必要なソフトウェアのインストール」の項目を確認してください。

パッケージバージョンは0.1。実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.2で確認しています。


パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("devtools")
devtools::install_github("dgrtwo/gganimate")

必要なソフトウェアのインストール

GIFアニメーション、mp4の出力に必要なImageMagickとFFmpegのインストール方法です。Macは各ソフトウェアのtar.gz形式のアーカイブ・バイナリ・ファイルをダウンロードし、ホームフォルダに保存後、下記コマンドをターミナルで実行してください。

windowsは実行ファイルで用意されているので、クリックでインストールが可能です。

・ImageMagick
 http://imagemagick.org/script/binary-releases.php

・FFmpeg
 http://ffmpeg.org/download.html

環境によってXcodeのインストールが必要です。コマンド実行時にエラーが出た場合はApp Storeからインストールしてください。なお、swf(フラッシュ)は利用頻度が減っているので紹介しません。

###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/"

###FFmpeg#####
#http://ffmpeg.org/download.html
#Macはリンク先More releasesをクリックして「Download gzip taball」をダウンロード
#最後にパスワードが聞かれるので入力
#インストール後はホームに移動したffmpeg-2.8.6.tar.gzと解凍後にできるフォルダを削除して構いません
cd $HOME
tar xvzf ffmpeg-2.8.6.tar.gz
cd ffmpeg-2.8.6
./configure --disable-yasm
make
sudo make install
sudo cp -p ffmpeg /usr/local/bin
sudo cp -p ffprobe /usr/local/bin

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("gganimate")
library("ggplot2")

###データ例の作成#####
n <- 3000
#geom_boxploth,geom_violinhに適応
TestData <- data.frame(Year = sample(paste0(2016:2020), n, replace = TRUE),
                       Group = sample(paste0("Group", 1:3), n, replace = TRUE),
                       Data1 = runif(n) + sample(1:10, n, replace = TRUE),
                       Data2 = runif(n) * runif(n))
########

#アニメーション化するggplotオブジェクトを作成:frameオプション
#frameオプションにアニメーションの基準となる変数を設定
TestPlot <- ggplot(TestData, aes(x = Data1, y = Data2, size = Data1, color = Group,
                                 frame = Year)) +
            geom_point() + guides(size = "none")
###参考:Groupでfacetプロットを用意#####
#FacetTestPlot <- ggplot(TestData, aes(x = Data1, y = Data2, size = Data1, color = Group,
#                                      frame = Year)) +
#            geom_point() + guides(size = "none") +
#            facet_wrap(~ Group, scales = "free")

#ファイルの出力:gg_animateコマンド
#ggplot2のオブジェクトを設定:pオプション
#ファイル名の設定:filenameオプション
#frameで指定した変数名をタイトル表示:title_frameオプション

#一枚づつgifでプロット
gg_animate(TestPlot)

#GIFアニメーションで出力
#ImageMagickのインストールが必要です
#http://imagemagick.org/script/binary-releases.php
gg_animate(TestPlot, filename = "TEST.gif", title_frame = TRUE)
#gg_animate(FacetTestPlot, filename = "FacetTEST.gif", title_frame = TRUE)

#mp4で出力
#FFmpegのインストールが必要です
#http://ffmpeg.org/download.html
gg_animate(TestPlot, filename = "TEST.mp4", title_frame = TRUE)

#htmlで出力
#保存場所にjsフォルダ,imagesフォルダ,htmlファイルが出力されます
gg_animate(TestPlot, filename = "TEST.html", title_frame = TRUE)

#参考:フラッシュで出力
#swftoolsのインストールが必要です
#http://www.swftools.org
#gg_animate(TestPlot, filename = "TEST.swf", title_frame = TRUE)

出力例

・frameオプションを適応しプロット

・参考:Groupでfacetプロット


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

スポンサードリンク

おすすめコンテンツ


スポンサードリンク