はじめてのggplot2(1):基本構造と散布図
タイトルはggplot2
であるが,RStudioを起動したら迷わず,関連パッケージを一気に読み込んでくれるtidyverse
パッケージをロードすればよい。
library(tidyverse)
いつものように「ラブライブ!サンシャイン!!」のスクールアイドルグループAqoursのメンバーのデータを使用する。
dat <- data_frame( name=c("高海千歌","桜内梨子","松浦果南","黒澤ダイヤ","渡辺曜","津島善子","国木田花丸","小原鞠莉","黒澤ルビィ"), grade=c(2,2,3,3,2,1,1,3,1), #学年 height=c(157,160,162,162,157,156,152,163,154), #身長 B=c(82,80,83,80,82,79,83,87,76), #バスト W=c(59,58,58,57,57,58,57,60,56), #ウエスト H=c(83,82,84,80,81,80,83,84,79) #ヒップ ) dat
念のため,学年は因子型に変換しておく
dat$grade <- factor(dat$grade)
基本の構造
ggplot(data = dat) + geom_point(mapping = aes(x = height, y = B))
大体身長とバストサイズが関連しているが,1名例外がいることが分かる。
まずggplot()
で使うデータセットを指定し,geom_point()
で点の散布図を描くという指定をしている。それぞれ情報を追加していく際に+
でつなげるのが特徴である。geom_point
のpointの部分が変わると別の種類のグラフになる。aesとは,aesthetics(訳語は美学,美的感覚)のことで,視覚的な特性を定義する部分である。ここでは横軸をheight,縦軸をBと指定している。
上記コードの形が基本形だが,実際には色々省略可能であり,下記のように単純にできる。
ggplot(dat) + geom_point(aes(height, B)) や ggplot(dat, aes(height, B)) + geom_point()
でも同じグラフが描ける。下のコードの方は,ggplot()
の中にaesが入っている。
いろいろな散布図
散布図を学年で色分け
ggplot(data = dat) + geom_point(mapping = aes(x = height, y = B, color = grade))
先ほどの点のプロットに,学年別に色を付けた。aes()
の中の引数にcolor = grade
が追加されただけの操作である。それぞれのデータが学年とも関連している様子が読み取れる。
散布図を学年で記号分け
ggplot(data = dat) + geom_point(mapping = aes(x = height, y = B, shape = grade))
色ではなくて記号で区別することもできる。こんどは,color =
の所がshape =
に変わっただけである。
テキストで散布図
ggplot(data = dat) + geom_text(mapping = aes(x = height, y = B, label = name))
それぞれの点が誰のデータか把握するために,点を名前のデータで表示してみた。ここではいくつか変更点があり,geom_text()
に変わっている点と,aes()
の中の引数にlabel = name
が加わっている。
身長は最も低いのにバストサイズが中程度という,意図的な設定を感じざるを得ないキャラが,花丸ちゃんだということも判明する。あと,千歌ちゃんと曜ちゃんの身長とバストサイズが同じなので,文字が重なってしまっている。