読者です 読者をやめる 読者になる 読者になる

ggplotはただの綺麗系graphics libraryではない

R ggplot

id:nozmaことかつどんさんに教えてもらいながらggplotを勉強して、Tsukuba.R#6の発表資料をせこせこと作っています(遅)。ggplotは何も考えずに使っていると「ディフォルトが綺麗な感じのパッケージなんだなー」みたいな印象で終わってしまいそうですが、ggplotの真の力はそこではありません。たぶんポイントは2つあると思います。

plotに関して統一的な取り扱いをできるようにしたこと

plot系の関数は引数が多くなりがちです。「ええっと、あれをやるためのオプションは…」とhelpを引いた回数数しれず。それでも分からずhttp://bm2.genes.nig.ac.jp/RGM2/index.phpを見にいった回数も(ry。「ええい、あのplotを一発でできるような関数はないのか!!」というのをまとめたのがlatticeパッケージでしょう(たぶん)。しかし、このlatticeパッケージは関数名ができあがった形とそのまま対応しており、しかも引数などは統一的になっていないので使いこなすのが非常に大変です。

そこで、ggplotの作者のHadley Wickhamさんは考えました。「plot操作を簡単に行なえて、しかも統一的には扱えないだろうか」と。そこで、統計系のgraphicsで必要な構成要素を考えました。その要素を書き出したのが、ここにあります。抜き出すと

  • Geoms
  • Statistics
  • Scales
  • Coordinate systems
  • Faceting
  • Position adjustments

などなど。それぞれの要素がどういう役割なのかetcについてはTsukuba.R#6で発表しますが(是非聞きにきて欲しい)、統計解析などをやる人にとってはとてもなじみのあるものばかりだと思います。それらがlayerオブジェクトという形になって返ってきて、このlayerを重ねて最終的なplotができる。「自分のやりたい解析、表示がどういう部類に属しているかを考え、その中から必要なものを探す」という思考により、統一的な考え方でplotをすることができます。

これがlibrary(base)やlibrary(lattice)にはないggplotの強み。

使いこなすうちに統計解析の基本的な考え方が身につく

ggplotのUserが「構成要素の一つにFacetingというのがあるのかー、どういうことができるか調べてみよう」という風に調べます。色んなfactorごとにXXXができる、ということが分かります(XXXにはhistogramを描くなどが入る)。factorごとにXXXしていくというのをやると、データのsubsetに注目すると性質が分かりやすいということを学習します(まだ知らなかったら)。

という風に構成要素のパーツを勉強して、それを使いこなせるようになっていくと統計解析の基本的な考え方が身についてくると思います。これを作者が狙っていたかは僕には分かりませんが、非常に重要な要素だなと思います。「統計勉強したいんだけど、どうすればいいのかなー。とりあえず検定の方法とか覚えればいいのか」という感じで勉強するよりよっぽど有用で、しかも現実的に使うものが身につくと思います。

以上の理由により

id:syou6162はggplotを強く推薦します。というわけで、皆さんTsukuba.R#6の発表に期待してくだしあ!!