Press "Enter" to skip to content

[R]様々なグラフ表現1

wyosis 0

http://r4ds.had.co.nz/data-visualisation.html#geometric-objects

引き続き「R for Data Scientist」の3章翻訳です。今回のテーマは散布図の線表示。本当は今日で3章は終わらせる予定だったけど、結構手間取ったので分割することにした。これは2ヶ月かかるかもしれん・・・。

グラフの分割表示

テーマに入る前にこの前の分に入り切らなかったグラフの複数表示を載せる。

library(tidyverse)

をいつもどおり読み込んで、

ggplot(data = mpg) + 
 geom_point(mapping = aes(x = displ, y = hwy)) + 
 facet_wrap(~ class, nrow = 2)

ggplot(data = mpg) + 
 geom_point(mapping = aes(x = displ, y = hwy)) + 
 facet_grid(drv ~ cyl)

facet_wrapやfacet_gridでグラフを要素ごとに分けることができる。wrapの方はわかりやすく、~の後ろは分けたい要素でnrowは何行にしたいかを指定する。gridはまず、gridで指定した行 ~ 列でグラフエリアを配置し、それぞれのx軸とy軸をaesで設定したものにする。

散布図の近似線

散布図はgeom_pointでプロットできるが、代わりにgeom_smoothを使うと点ではなく線を引くことができる。

ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ, y = hwy))

ちなみに横軸は排気量で縦軸が一定量のガソリンから走ることができる距離。線を引く場合でも点のときと同じように、他の要素を可視化することができる。例えば駆動の種類(drv)ごとに線を分けたい場合、

> ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))

とできる。全体として排気量と燃費は負の関係にあるが、後輪駆動のものについては極小値を持っていることがわかる。そして前輪駆動の場合は一定の排気量を超えると燃費に変化が生じないようである。私は車には詳しくないのでこれ以上の分析は無理です・・・。

ちなみに、点と線を同時に表記することもできる。

> ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
geom_smooth(mapping = aes(x = displ, y = hwy))

このときに便利なのが引数のグローバル化で、

> ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point() +
geom_smooth()

とすると、mapping = aes(x = displ, y = hwy)の設定がpointとsmoothに引き継がれる。よって上と同じグラフを得ることができる。

個別に追加することもできて、

> ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point(mapping = aes(color = class)) +
geom_smooth()

のようにすると、点のみ車種(class)ごとの色分けができる。

ややおまけだが、

> ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point(mapping = aes(color = class)) +
geom_smooth(data = filter(mpg, class == "subcompact"), se = FALSE)

filterはデータセットから特定のデータのみを抜き出す関数。この場合、車種がsubcompactなデータのみについて線を引くことができる。

 

コメントを残す

メールアドレスが公開されることはありません。