2nd edition。
【書籍】TheGrammarOfGraphicsが具体例が全然無くて理解しづらいため、先にggplot2のこの本を読む事に。 Springerの40%オフに釣られてpdfで2021年11月上旬に購入。
まだ2.6.3のあたりだが、やはり具体例がある方が圧倒的に分かりやすいよなぁ。
2章は簡単な例を一通り見るという章なのだが、使うだけならこれで十分だな、という気がする。 自分の目的はggplot2を使いたいのでは無くてGrammar of Graphicsを学びたいなのでここからが本番だが。
ただやはり具体例があるといいね。dataとvariableの関係とかやはり具体例が多い方が分かりやすい。
3章は使う視点でのより詳細な機能説明。 ここまでで基本的な利用の情報が全て揃う感じ。
4章からはGrammarの解説。 やはり具体例をもとに話をするので圧倒的に分かりやすいな。 dataとaestheticsへのマッピングがdata frame 的なのを作って、それに対していろいろ操作してレイヤーが出来る、 というのが骨格っぽいな。
scalingは分かりにくいな。statistical transformationの前に実行される、とあるが、例えば算術平均とかscaleのあとに実行されちゃうの? trainingとscalingはあとの章を読んでいくと分かるようになると期待。
5つの構成要素
スケールはデータの領域からaesceticの領域への関数との事。おぉ、そう聞くとcoordとの違いも分かるな。
テーマまで読んで、基本的なグラフの構成要素に関しては一通り読み終わった。 だいたい全体像を理解出来た気はする。
まだstatsとかtransformationとかは出てきてないのでここからはそういう話だろうけれど、 ここまででも割と主要なアイデアは出尽くしている気もするな。
なかなか分かりやすくて良く出来ている気がするな、ggplot2。
9章がtidyrでのデータの形式変換、10章がdplyrによる集計等の操作。 ggplot2とは直接は関係無いし、この本を読む自分のモチベーション的には知らなくても良いのだが、一緒に使う事になるライブラリだろうし、 前から興味はあったので簡単にでも学べたのは良い機会だった。
dplyrは噂には聞いていたが見るのは初めてで、tidyrは遭遇した事はあるが適当にググって切り抜けていたので、ちゃんと理解出来て良かった。 dplyrはF# でパイプ演算子使ってる身としては凄く分かりやすいな。
Rは式をラムダとかつけずに書けてdata frameの変数もそのまま参照出来るのはいいよな。 式を評価せずに触るの、R的で良い。
という事で最後まで読み終わった。(2021-12-09)
良い本だった。自分のように、ggplot2を使う予定は無くてGrammar of Graphicsとはどういう物かを知りたい人にとっても、十分に読みやすくて分かりやすい本だった。 そしてそれは、一プログラマとして学ぶに値する事だとも思った。 良く出来たライブラリのAPIを学ぶのは、APIをどう設計すべきか、という事を学ぶとても良い方法だと思う。
Grammar of Graphicsが強力なのは、統計のグラフという物の種類を良く分析していて、ちゃんとしたカテゴライズが出来ているから、という側面が強い。 そのちゃんとしたドメイン理解をもとに、それをエレガントに実装したからこそggplot2はこんなに良い物になっている。
だからggplot2 を学んだところで、今自分が取り組んでいる問題をこのようにエレガントには解決出来ないだろう。 それでも、ドメイン理解とAPIの設計という両面で、これは目標とすべき一例になっている。 それを学ぶのは価値がある事だろう。
The Grammar of Graphics本がオブジェクト指向とは、とか延々と語って肝心のグラフ周りの具体例を全然出さないのと比べて、 この本は具体例が多く、けれどちゃんと文法の構成要素の視点での解説があって、 非常に良く出来ていると思った。
また、最後の方に実例としてdplyrとかと合わせて使う例があって、これがdplyrとのAPI設計的な類似性(grammar 的な側面)が感じられて、良い勉強になる。 しかもRじゃないとここまで簡潔には書けない感じなのが伝わってきて、Rなかなか良いな、という気分になる。pandasではこういう感じで書けないんだよなぁ。
という事でGrammar of Graphicsに関心がある人にはオススメ出来ます。
追記: GoG本読み終わった感想も参考になるかも。 The Grammar of Graphics を読み終わっての感想 - なーんだ、ただの水たまりじゃないか
せっかくなので、Layered GoGの論文も読んで見る。
良くわからなくなるのでメモ。dataとaesの間のマッピングを定義する時に、scale はこの間のマッピングをコントロールする。
これはレイヤー間で共通。
読み終わった。最初にこのpdf読んでもいまいち中身が無い感じがするだろうけれど、一通り本を読んだあとに読むと簡潔にまとまってて、軽い見直し感覚に良かった。