ベクトル(文字列)の頻度を可視化したい with dplyr, ggplot2
ggplot2が苦手な俺がどうやってそれをやったのかという備忘録。
必要なパッケージは以下の3つ。適当にinstall.packagesしておくべし。
library(ggplot2) library(magrittr) library(data.table)
サンプルデータは適当に作った文字列ベクトル
x <- sample(letters[1:15], 100, replace=TRUE)
これをggplot2で可視化(棒グラフ)にしたい。したいんだが、ggplot2苦手な俺はがんばった。もちろん
- 気が付いたらRがF#になる日が来るのかもしれない、そんなことを考えていました - My Life as a Mock Quant
- magrittrがいい感じ - My Life as a Mock Quant
を見てもわかるように、dplyr & chain脳になった俺は%>%を使って処理を結合し、全てを一発で済ませるようにした。
結果として以下のコードが出来上がった。
x %>% data.frame %>% setnames("STR") %>% ggplot(data=., aes(STR)) + geom_bar(aes(fill=STR))
キモはsetnames関数で、これによりデータフレームの列名を変更しつつ、その結果を次の処理へchaninできる。これはdata.tableにある関数。
を見ていて気が付いた。setname関数便利&@gg_hatano氏えらい。
それから列名を変換したdata.frameをggplot2に渡せばOK。その際には「data=.」のようにどこにchainでやってきたデータを突っ込むのかを指定する。
この「.」はmagrittrパッケージ由来っぽい。githubに記載があった。