53
実行して4秒で動画 ~animationパッケージ で動画作成~ @sleipnir002 Tokyo.R#20

animation1.0

Embed Size (px)

Citation preview

Page 1: animation1.0

実行して4秒で動画~animationパッケージ

で動画作成~

@sleipnir002

Tokyo.R#20

Page 2: animation1.0

自己紹介

@sleipnir002

•Tokyo.Rでパターン認識の発表をシリーズでやっています。•職業:ITコンサル•データマイニングのIT業界への普及と促進のために活動しています。•ガイア好きです。•好きなAKB48のメンバーはこじはるです。

自粛

Page 3: animation1.0

animation

パッケージのご紹介

Page 4: animation1.0

パッケージ概要

1. Rから複数のアニメーションフォーマットへのエクスポートをサポート

→自分の望む形式に変換して、ホームページやレポート

に埋め込みができる!

2. 統計教育用のサンプルアニメーションを含む→統計の勉強になる!

Rのプロットを結合して、アニメーション形式で出力するパッケージ

Page 5: animation1.0

animationを使って動画を作成してみよう!

library(animation)

ani.options(outdir="/var/XXX/")

s<-function(x, k){x^3+k*x^2-5*x+4}

ani.start()

for(i in -30:30){

plot(s(-30:30, i), type="l", ylim=c(-10000, 10000))

}

ani.stop()

オプションの設定

3次関数の係数を変更してプロット

録画開始

録画停止

Package animation

HTML形式のファイルが作成されていることを確認する。

Page 6: animation1.0

インストール

• install.packages(“animation”)だけでOK!

• 以下のコマンドのインストールが必要

• ImageMagick・・・画像処理用のコマンドラインツール

• SWF Tools・・・SWF生成用のコマンドラインツール

$ sudo apt-get install imagemagick

$ sudo apt-get install libfreetype6-dev libgif-dev xpdf libjpeg8 libjpeg8-dev ←r-base-devを削除した。$ wget http://www.swftools.org/swftools-0.9.1.tar.gz$ tar -zxvf swftools-0.9.1.tar.gz$cd swftools-0.9.1$./configure$make$sudo make install

OS:Ubuntu 10.10 64bitの場合

Page 7: animation1.0

出力形式

• HTML形式・・・ブラウザ上で再生するページを作成

• GIF形式・・・GIFに出力

• SWF形式・・・FLASHに出力

• PDF形式・・・Texで埋め込み

• 動画形式・・・mpeg4等に出力

• 動画をRのグラフィックデバイス上に作成することも可能。

Page 8: animation1.0

動画を作成してみる

Page 9: animation1.0

animationを使って動画を作成する3つの方法

A) savehoge()形式で特定フォーマットで保存

B) ani.start()形式でHTML形式で保存

C) ani.record()で録画、ani.replayで再生を行う。

Page 10: animation1.0

A)saveHTML

• JSを使用してHTMLから動画を閲覧可能にする。

• exprで指定した手順でplotした画像を動画にする。

• img.nameの引数を保存する画像の拡張子に使用する。

• saveHTMLを複数回実行すると、ページ上にはHTMLが複数表示される。

>saveHTML(expr={bisection.method()}, img.name="bi")>saveHTML(expr={newton.method()}, img.name="newton")

動画を閲覧できるHMTLページを作成する。

方程式の根を求めるアルゴリズムのデモ

Page 11: animation1.0

A)saveGIF

• ImageMagickのコマンドを使用して、動画を作成する。

• exprで指定した手順でplotした画像を動画にする。

• img.nameで指定した接頭辞で保存する。

• ファイルはオプションoutdirで指定したディレクトリにmovie.nameの名前で保存される。

>saveGIF(expr={boot.iid()}, clean=TRUE, img.name="boot", movie.name="boot.gif")

GIF形式の動画を作成する。

ブートストラップのデモ

Page 12: animation1.0

A)saveSWF

• SWF Toolsのpng2swfコマンドなどを使用して、画像をFLASHに変換する。

• exprで指定した手順でplotした画像を動画にする。

• img.nameで指定した接頭辞で保存する。

• ファイルはオプションoutdirで指定したディレクトリにswf.nameの名前で保存される。

> saveSWF({expr=kmeans.ani(centers=4)},swftools=NULL, img.name="kmeans", swf.name="kmeans.swf")

FLASH形式の動画を画像から作成する。

K-means法の動きを表すアルゴリズムのデモ

Page 13: animation1.0

B)ani.start(), ani.stop()

• 自動的にoutdirにJSファイルをコピーして、start開始後、stopまでに作成されたplotで動画を作成する。

• saveHTMLとは出力画面の形式が異なる。

• 指定したフォルダに必要なjavascriptファイルを出力するので注意。

HTMLによるアニメーションページを作成

>ani.start()>・・・>ani.stop()

デモは省略

Page 14: animation1.0

C)ani.record (), ani.replay()

• ani.recordでカレントのデバイスの画像を保存して、記録する。

• ani.replayで記録した動画の再生を行う。

recordでカレントのデバイスを録画して、replayで再生する。

>for(i in 0:9){+ rbfsvm <- ksvm(x,y,kernel=rbfdot(sigma=1), C=1+i*20)+ ani.record()+ plot(rbfsvm,data=x,key.axes=axis(4, seq(-7, 7, by=1)), zlim=c(-7, 7))+}>ani.replay()

SVMの正則化のコストを大きくした時の挙動のデモ

Page 15: animation1.0

オプション

Page 16: animation1.0

ani.option(1)

• interval・・・フレームの間隔(秒)

• nmax・・・フレームの最大数

• ani.width,ani.height・・・画像の幅と高さ

• ani.dev,ani.type・・・デバイス、画像の種類

>ani.option() or ani.option(“interval”) #オプション内容の確認>ani.option(oopt) #デフォルトに戻す。>ani.options(interval=0.5)#インターバルを0.5に設定

Page 17: animation1.0

ani.option(2)

[OUTDIR][hmtlfile]

[IMAGES]

・・・デフォルトのHTML出力ファイル

・・・デフォルトの画像出力先フォルダ

デフォルトの出力先フォルダ。特に指定しなければ、tmpフォルダが使用される。

• outdir・・・デフォルトの出力先フォルダ

• htmlfile・・・HTML出力(index.html)

• images・・・作成した画像を含むフォルダ

Page 18: animation1.0

まとめ

• animationパッケージでRで簡単に動画が作成できるからみんな動画で可視化してみよう。

• animationパッケージで動画を作成する際のフォーマットはGIF,HTML,SWF,MPEGなど

• 統計教育用アニメーションがいっぱいあるので、暇な人は見てみよう。

Page 19: animation1.0

最後に

Page 20: animation1.0

こんな使い方はいかがでしょうか?

Page 21: animation1.0

Tokyo.R第20回記念作品

「Rを巡る素敵な恋の物語」

Page 22: animation1.0

DREAMS COMES TRUE 『LOVE LOVE LOVE』

Page 23: animation1.0

今からお話しするのは

Rを巡る素敵な恋の物語

Page 24: animation1.0

この物語の主人公は

Page 25: animation1.0

Tokyo.Rに参加しているR君

Page 26: animation1.0

理系大学院生の彼は勉強熱心で

まじめな青年

Page 27: animation1.0

そしてRが大好き

Page 28: animation1.0

強いて挙げるとすると

彼の欠点はまじめすぎて奥手なところ

Page 29: animation1.0

そんな彼は毎回

Tokyo.Rに参加しています

Page 30: animation1.0

その理由はRの勉強をするため

Page 31: animation1.0

でも、彼にはTokyo.Rに参加する

もう一つの理由がありました

Page 32: animation1.0

それはよくTokyo.Rに参加しているSちゃん

Page 33: animation1.0

彼はひそかに彼女に想いを

よせいていたのでした

Page 34: animation1.0

奥手な彼は彼女のアドレスを

教えてもらったのですが、

Page 35: animation1.0

Rの話しかできずにいたのです

Page 36: animation1.0

そんなある日、

Page 37: animation1.0

彼は素敵なイケメンITコンサルさんの紹介で

animationパッケージに出会いました

Page 38: animation1.0

「よし、これだ!」

Page 39: animation1.0

意を決したS君

Page 40: animation1.0

ある日、Sちゃんを

誘ってこう話しかけました

Page 41: animation1.0

「ねぇSちゃん、Rのプロットにサブタイトルを付けたいんだけど、付け方がわからないから

教えてくれないかな」

Page 42: animation1.0

Sちゃんは答えました

Page 43: animation1.0

『あら、そんなの簡単だわ。』

Page 44: animation1.0

「ほんとに、じゃあこのソースコードに

付け加えてもらえるかな?」

Page 45: animation1.0

R君は自分のPCをSちゃんの前に

置きました

Page 46: animation1.0

『えーと、plotは・・・あっ・・・』

Page 47: animation1.0

Sちゃんはソースコード読み、

一瞬はっとします

Page 48: animation1.0

そして、彼女はそのソースコードに

sub=“yes”と書き加え、

二人はめでたく結ばれました。

Page 49: animation1.0

そのコードはanimation

パッケージを使用していました

Page 50: animation1.0

そしてそのコードを実行すると・・・

Page 51: animation1.0
Page 52: animation1.0

Fin

Page 53: animation1.0

animationで素敵なRライフを

Be happyWith animation

※今日の資料はコードも含めてblogにアップします。