ggplot2 bookを読む方法

現在Hadleyはggplot2 bookという本を執筆中です。ggplot2についてゼロから説明した本で、ggplot2を使っている人のバイブルとなるような本です。たぶん出版はだいぶ先なんですが、GithubレポジトリにあるコードをビルドすればPDFをつくることができます。

github.com

ちょっと自分のメモも兼ねて、Ubuntu 14.04でこの本をビルドする方法を書いておきます。WindowsとかMacとかでも「必要なパッケージをインストール」以降はたぶん同じです。

必要なパッケージをインストール

READMEによると、以下のものが必要とされています。

Ubuntuだと下のような感じです(pandocは別でインストールする)。私はよくわからないので言われるがままにtexlive-fullを入れましたが、これはやりすぎかも。texlivetexlive-fonts-extra(Inconsolataフォントのために必要)くらいでいいのかも。

sudo apt-get install r-base r-base-dev \
  texlive-full optipng \
  git

最新版のknitrは、pandocのバージョンが1.12.3以降でないと動きません。これを自分で入れるのはけっこうめんどくさいので、RStudioのを使います。(RStudio Serverの場合はパスが/usr/lib/rstudio-server/...になります)

sudo apt-get install gdebi-core
wget https://download1.rstudio.org/rstudio-0.99.489-amd64.deb
sudo gdebi rstudio-0.99.489-amd64.deb

sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc /usr/local/bin
sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc-citeproc /usr/local/bin

レポジトリをclone

git clone https://github.com/hadley/ggplot2-book
cd ggplot2-book

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

まず、libcurlとlibxml2をインストールしておきます。

追記:ggmap用にlibgdalとlibprojも

sudo apt-get install libcurl4-openssl-dev libxml2-dev libgdal-dev libproj-dev

終わったら、Rのパッケージをインストールします。この本はggplot2 1.1.0をベースに書かれているので、Githubから最新版のggplot2とかもろもろをインストールしないと動きません。 追記:ggplot2 2.0.0がリリースされました。が、依存パッケージはまだGithub版が必要だったりするので指示に従いましょう。

このあたりはREADMEの指示に従ってください。

install.packages("devtools")

library(devtools)
install_deps(".")

ビルド

tex/bookディレクトリがすでにできているので、いちどmake cleanしてからでないとビルドできません(これおかしいのでIssueに報告はしときました...)。

make clean
make

これでbook/ggplot2-book.pdfができているはずです。

注意点

1. ビルドできると思ってはいけない

ggplot2はいまガンガン書き換えられているので、簡単にビルドできなくなります。

今も、stat_bin()を離散値では使えないようにする、という変更がggplot2に入ったためにビルドがこけます。 とりあえずプルリク投げときましたが、これがマージされたとしても束の間の平穏が訪れるにすぎません。たぶんまた何か変更が入って何かが壊れるでしょう。

運が良ければビルドできるかも、くらいに思っておいた方がいいです(こんな記事を書いといてなんですけど...)

github.com

2. 他の人の手元で動くと思ってはいけない

ビルドできたからといって、ggplot2 bookのコードが他の人の手元で動くとは限りません。ggplot2 1.1.0では相当な量の変更が入るので、現行バージョン(1.0.1)との互換性はあまり期待できません。 ggplot2 bookで覚えたコードを人に教えるときには注意が必要です。

まとめ

このようにビルドするのがかなり大変なggplot2 bookですが、読むと勉強になります。ggplot2を割とヘビーに使っている方は、目を通して損はないと思います。