Rのggplotで共通データを継承させて楽にコードを書く

ggplotを使う時、同じデータを指定し続けるのが面倒くさい。

楽してグラフを書く方法を探すと、ggplotでも継承が使えるようだ。

サンプルデータのmpgを使ってみる。

> mpg
# A tibble: 234 x 11
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class  
   <chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>  
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact
 2 audi         a4           1.8  1999     4 manual(m5) f        21    29 p     compact
 3 audi         a4           2    2008     4 manual(m6) f        20    31 p     compact
 4 audi         a4           2    2008     4 auto(av)   f        21    30 p     compact
 5 audi         a4           2.8  1999     6 auto(l5)   f        16    26 p     compact
 6 audi         a4           2.8  1999     6 manual(m5) f        18    26 p     compact
 7 audi         a4           3.1  2008     6 auto(av)   f        18    27 p     compact
 8 audi         a4 quattro   1.8  1999     4 manual(m5) 4        18    26 p     compact
 9 audi         a4 quattro   1.8  1999     4 auto(l5)   4        16    25 p     compact
10 audi         a4 quattro   2    2008     4 manual(m6) 4        20    28 p     compact
# … with 224 more rows

適当な散布図を書いて近似曲線と95%信頼区間を描画してみる。

> ggplot() + 
     geom_point(data = mpg, mapping = aes(x = displ, y = cty)) + 
     geom_smooth(data = mpg, mapping = aes(x = displ, y = cty), method = "lm")

geom_pointとgeom_smoothで同じ引数を取っていて、2回も入力するのは手間。

そこで、最初のggplot内で指定してやると、自動的にそれ以降のレイヤーで継承される。

> ggplot(data = mpg, mapping = aes(x = displ, y = cty)) +
     geom_point() +
     geom_smooth(method = "lm")

これでコーディングや保守性も上がる。

コメント

タイトルとURLをコピーしました