はじめてのggplot2(2):棒グラフを好みの色で描く
ggplot2
の基本の構造等は前回の解説を参照。
まずはいつものデータの読み込み。tidyverseをロードしておけば,ggplot2も読み込まれる。
library(tidyverse) 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) #ヒップ )
Aqoursのメンバーごとの身長の棒グラフを描く
今回はx軸にメンバーの名前,y軸に身長がくるグラフにするので,geom_col()
を使う。
ggplot(data = dat) + geom_col(mapping = aes(x = name, y = height))
メンバーの並び順を変える
デフォルトのままだと,並び順に規則性がない感じなので,とりあえず公式webサイトでの紹介順に並び変えたい。並び方を指定するには,
で紹介した通り,因子型が簡単なので,変数nameを因子型に変換する。ここでは新たな変数namefを作成してみる。
dat$namef <- factor(dat$name)
そして,指定した順に並び変える。
library(forcats) dat$namef <- fct_relevel(dat$namef, "高海千歌","桜内梨子","松浦果南","黒澤ダイヤ","渡辺曜","津島善子","国木田花丸","小原鞠莉","黒澤ルビィ") levels(dat$namef)
[1] "高海千歌" "桜内梨子" "松浦果南" "黒澤ダイヤ" "渡辺曜" "津島善子" "国木田花丸" "小原鞠莉" "黒澤ルビィ"
棒グラフを色で塗りつぶす
aes()
の中にfill =
を加え,x軸に指定した変数名を入れると着色される。後の追加編集のため,ここではpというオブジェクトに格納している。
p <- ggplot(data = dat) + geom_col(mapping = aes(x = namef, y = height, fill=namef)) p
ただし,色がデフォルトのものであるため,ここは是非メンバーのイメージカラーで塗りつぶしてみたくなるのが自然な流れであろう。
各メンバーの棒グラフの色をそれぞれ指定する
Aqoursメンバーのイメージカラーについて,公式サイトのメンバー紹介ページ
から,各シンボルマークで使われている色を使用する。この情報を取得する方法は色々あるが,今回はブラウザFirefox上で,スポイト機能を使って取得してみた。やり方は以下のリンク先を参照した。
結果,メンバーの紹介順に,左から
imagecol <- c("#FF791B","#FF7777","#00D29E","#F43232","#2AA4DB","#AEAEAE","#CFBA0F","#A530E0","#EE55B7")
という情報であることが分かった。ここでは後で使うため,imagecol
というオブジェクトに格納した。
そして,グラフの色を手動で指定するために,scale_fill_manual()
を使う。さきほど描いたグラフp
に情報を追加するだけである。
p + scale_fill_manual(values = imagecol)
これで直感的にグラフを解釈しやすくなった!