ggplot2に関する資料まとめ

そろそろワンストップなまとめ記事があってもいいはずと思ったので、個人的なメモとしてまとめました。

**2016/06/10追記: 資料1件追加**  
**2016/03/15追記: ggplot2 v2向けに一部修正**

## ggplot2のイメージをつかもう
まずはこのggplot2がどういうものなのかをつかみましょう。

### ggplot2の完全な初心者向け

ggplot2に初めて触れるという方は、まずこのスライドを一読されるのをオススメします:

- [ggplot2によるグラフ化@HijiyamaR#2](http://www.slideshare.net/nocchi_airport/ggplot2-kazutan-rver2) ※Slideshareリンク

ggplot2を理解するためには、その文法をイメージできるようになることが近道です。このスライドは従来のplotとggplot2との違いをわかりやすく解説してあります。まずはレイヤーの感覚をつかむためにも、提示してあるサンプルコードをひたすら打ちましょう。手を動かす、大事。

- [ggplot2用例集　入門編](http://www.slideshare.net/nocchi_airport/ggplot2-62471507)

こちらはggplot2を実際に使った用例集として、主に心理系領域での場面を想定して用意してあります。これにあるサンプルコードをひたすら打ちましょう。手を動かす、大事。

### もう少しggplot2の中身を知りたい方向け

Rにもある程度慣れてて、上述のスライドにあるテストコードを打ち終わったら、こちらのスライドにチャレンジしましょう:

- [ggplot2再入門](http://www.slideshare.net/yutannihilation/ggplot2-53851875) ※Slideshareリンク

ちょっと難しく感じるところがあるかも知れませんが、諦めず最後まで読み通しましょう。このスライドはggplot2の基礎、そして今後自分で使いこなすために必要な知識が過不足なくつめ込まれているからです。このスライドで"Grammar of Graphics"の感覚をつかむためにも、サンプルコードをひたすら打ちましょう。手を動かす、大事。

## ggplot2の機能一覧的な資料を手元に

ある程度イメージがつかめたら、コード写経ではなく自分でggplot2を描いてみましょう。R組み込みのデータから適当に見繕っていろんなplotをつくってみるといいでしょう。

しかし、いざ自分で一からggplot2を作っていこうにも、使用する関数や引数などわからないことがたくさんです。そこで、基本的な関数一覧などがまとまった資料を手元に置いておき、その都度確認しながら作業しましょう。

### ggplot2チートシート

日常使いなら、できるだけコンパクトにまとまっていたほうが何かと楽ですね。RStudioが作成して公開しているチートシートが便利です:

- [Data Visualization with ggplot2 Cheat Sheet](http://www.rstudio.com/wp-content/uploads/2015/12/ggplot2-cheatsheet-2.0.pdf) ※pdfリンク(最新版にリンク修正)

非常にコンパクトにまとまっていて、使い勝手が非常に高いです。これを印刷して手元に置いてもいいのですが、RStudioの最新版ならメニューの"Help - Cheatsheet"から開くことができます[^1]。
[^1]: 2016/03/15現在、リリース版は0.99.892で対応しています。

### ggplot2(v2.1.0) オンラインヘルプトピックス

「チートシートでは情報が圧縮されすぎていてよくわからない」「サンプルコードがないと無理」という方は、以下のサイトへ。

- [Index. ggplot2 2.1.0](http://docs.ggplot2.org/current/index.html)

これはggplot2のサポートサイト内にある、各関数のヘルプトピックス集です。手元に置いておく(ブラウザでピン留する)にはおそらく質・量ともにちょうどいいと思います[^2]。最初に紹介したスライドに出ていた"Grammar of Graphics"の区分でリストになっています。ぜひサンプルコードを打ちましょう。手を動かす、大事。

[^2]: **(2016/03/15追記)**ただし、この内容はversionが2.1.0と最新版のものです(2016/03/15現在)。以前のversionでは動かないものがありますのでご注意ください。

### ggplot2 book

このggplot2の開発者であるHadleyが現在執筆している書籍です。執筆中なのでまだ本体はないのですが、以下のGithubリポジトリにコードがおいてあり、自分でビルドすればpdf版が作れます:

- [hadley/ggplot2-book](https://github.com/hadley/ggplot2-book) ※Githubリポジトリへのリンク

ビルドする方法については、以下の記事を参考にしてください:

- [ggplot2 bookを読む方法 - Technically, technophobic.](http://notchained.hatenablog.com/entry/2015/10/11/063809)

おそらくこれがこれからの教科書になるはずです。

## 困った時に

自分で色々plotしていくと、「いろいろ調べたけれどわからない」と行き詰まってしまうことがよくあります。そんな時は以下を参考にしてください。

### #ggplot2逆引き

「あなたが躓くところはきっと誰かも躓いている」ということで、現在Qiitaで上記タグをつけたプロジェクトが進行中です:

- [ggplot2逆引きに関する26件の投稿 - Qiita](http://qiita.com/tags/ggplot2%E9%80%86%E5%BC%95%E3%81%8D) ※Qiita記事一覧
- [ggplot2逆引き](https://yutannihilation.github.io/ggplot2-gyakubiki/) ※プロジェクトまとめサイト

これがどのようなプロジェクトかは、以下のスライドをご覧ください:

- [押してダメなら引いてみろ！ ggplot2逆引きプロジェクト](http://www.slideshare.net/yutannihilation/ggplot2-52447195) ※SlideShareスライド

プロジェクトまとめサイトで記事を検索してヒットすれば、間違いなく目の前の問題は解決するはずです。ただ、だいぶ数がそろってきていますが、きっとまだまだあるはずです。小さなことでも大歓迎です。ぜひ投稿しましょう!

### r-wakalang

Tokyo.Rの有志が中心となって運用している、Rお悩み相談チャットルームです[^3]。利用方法はとても簡単で、メールアドレスを登録するだけです。詳しくは以下のスライドをご覧ください:

- [機械の体を手に入れるのよ、鉄郎!!!](http://www.slideshare.net/teramonagi/ss-52463319) ※SlideShareスライド

[^3]: slackというソフトウェアを利用しています。チャット機能の使い方などがわからない場合は、「slack ほげほげ」で検索するとだいたい解決します。あるいはチャットルームにいるメンバーに聞いてみるのもいいと思います。

ここには初心者用の部屋(#r_begginers)もありますし、ggplot2専用の部屋(#ggplot2)もあります。さらに上のスライドにある通り、質問が投下されると本当にスゴい方々があっという間に答えてくれます[^4]。わからなかったら、ぜひここで聞いてみましょう。

[^4]: 本当に早いです。そしてみなさんすごく親切です。多分いちいち英語記事を彷徨うよりはここで聞けば一発です。

## ggplot2を拡張

ある程度使っていくと、「ggplot2でこんなことできないのかな」など思うようになります。ggplot2の魅力は拡張パッケージも豊富にあることです:

- [ggplot2 拡張パッケージ一覧 #rstatsj - Qiita](http://qiita.com/hoxo_m/items/8cfe085d8ab00261bddd)

この中からいくつかピックアップして、簡単な説明とサンプルを準備しました[^5]:

- [kazutan/awesome-ggplot2](https://github.com/kazutan/awesome-ggplot2) ※Githubリポジトリ
- [RPubs - awesome_ggplot2](https://rpubs.com/kazutan/SappoRoR2015LT) ※説明用スライド

[^5]: 最近めっきり更新してなくてごめんなさい…でも放棄したわけではないんです。少し時間が取れたら、取れたら…。
また、各拡張パッケージのExampleのサンプルコードを取得・実行し、その出力をまとめたサイトがあります:

- [Home • All Your Figure Are Belong To Us](http://yutannihilation.github.io/allYourFigureAreBelongToUs/)
- [ggplot2関連パッケージのグラフを描きまくるGithub Pagesをちょっとアップデートしました。 - Technically, technophobic.](http://notchained.hatenablog.com/entry/2015/06/07/143456) ※解説記事

この他にもまだまだたくさんありますし、コンセプトと技術があれば**自分で開発することだってできます**。もしこの2つがあるのでしたら、チャレンジしてみてはいかがでしょうか。

## 最後に

この記事は2016/03/15現在での、私なりのまとめです。新たな情報を入手したり、変更が必要となったら随時修正します。