医学生がRStudioのggplot2でアニメーションを作ってみた

この記事をシェアする

 

はじめに

友人からggplot2でのアニメーションを作成を教わったので備忘録を兼ねて記事にします。

完全に備忘録的意味合いで書いてます。

完成したアニメーションはこちらになります。

f:id:Medicmed:20180305062926g:plain

 

Rプログラミングに詳しい友人がいなければ身につけられなかったスキルなので、ホントこの場で感謝の意を申し上げたいです()

 

事前準備が必要なこと

  1. tidyverseをインストールする
    ggplot2なども入っているパッケージみたいです。
    最近の流行りみたいなのでインストールしました。
    ただし、注意としては死ぬほどインストールに時間がかかります。
    調べたら色々記事にしている方がいたので、リンク貼っておきますね。
    興味のある人はながめてください。

    uribo.hatenablog.com

  2. インストール途中でHttrがインストールできず途中で止まる自体に陥る
    Rをインストールした際に"dev"のファイルかなにかを作っていなかったのが原因みたいです。httrだけ個別インストールしたらtidyverseのインストールに成功します。
    スタックオーバーフローとかに書いてあるのでみてください

    stackoverflow.com

  3. devtoolをインストールする
    パッケージが作れるやつみたいです。
    github上にあるパッケージをインストールする際に必要みたいです
    githubにのっかているやつは
    ”devtool::”
    を使ってパッケージインストールするみたいです。普段よくやっている”install.packages”はRのCRANにのっているものだけできるみたいですね。知らなかったです。
    ちなみに、github上のものは”install.packages("githubinstall”)でもいけるみたいですけど、今回は無理でしたので、devtool::を使用しました。
  4. devtoolを用いて「devtools::install_github("dgrtwo/gganimate")」を打ち込む
    今回のアニメーションに必要なのが、この"dgrtwo/gganimate"みたいです。

次に実際のRstudioでやったことをはっつけていきます。

【スポンサーリンク】
 

RStudio上でやってこと

今回使用したのは、gapminderに入っているデータセットです。

f:id:Medicmed:20180305065941p:plain

ってやるとheadで表示されたのがこちら。

f:id:Medicmed:20180305070036p:plain 

年代ごとの情報が欲しいのでyearを引数に取る関数を作成。

f:id:Medicmed:20180305070317p:plain

ちなみに「::」はlibrary()を用いなくてもそのまま直接使えるようになります。

「%>%」はLinuxコマンド言うところのpipeです「|」

RStudioだと「Ctrl+Shift+M」で「%>%」が出せます。

filterは行においてyearだけとってくるようにしてます。

f:id:Medicmed:20180305071115p:plain

次に、distinctでyearの列において固有の値だけを取ってきます。

pull()ではとってきた値をvectorにします。

c(year, year, year,・・・)ってみたいに変形しているんですね。

map()において「.」はpullでvectorにした固有のyearのことです。

f:id:Medicmed:20180305071902p:plain

tweerは補完に使用するものみたいです。

データとデータを滑らかにつなげてくれる存在みたいです。

ease="cubib-in-out"は、今回の場合だと「動いて止まって動く」パターンの指定の意味です。

他の形式はhelpでみればいくつかしていできるみたいです。

f:id:Medicmed:20180305072342p:plain

日本だけのデータをとってきて

f:id:Medicmed:20180305072533p:plain

実際アニメーションを作ってみる。

【スポンサーリンク】
 

f:id:Medicmed:20180305072807p:plain

ここで、「frame = .frame」がポイントで、これでアニメショーンが滑らかになる。

「frame = yr」にしても良いが、これだとtweerでせっかく滑らか仕上げにしたのにカクカクになる。

あと、この場合「frame = .frame」にするとtitleが自動的に「.frame」になるためにわけが分からなくなるために「title_frame=FALSE」で消しているらしい(※本人談)

「interval = .1」はアニメーションが0.1secごとに動くようにの意味

オンライン授業でRの勉強がしたい方はUdemyがオススメ

Udemyというオンライン授業サイトには、Rが勉強できるオンライン授業がたくさんあります。参考書などで勉強するのが苦手な方は映像授業でまず勉強してみるのが良いと思います。

世界最大級のオンライン学習サイトUdemy

www.udemy.com

実際のホームページを見てみて自分のレベルに合ったものを選択しましょう。

Rの勉強をはじめてされる際はぜひ参考にしてみてください。

 終わり。

【スポンサーリンク】