下表のデータを人口ピラミッドの形で描いてみる。
(もうちょっときれいに描ける人いそう。ご意見求む。)
usergender | userage bracket | users |
---|---|---|
female | 18-24 | 628 |
female | 25-34 | 1001 |
female | 35-44 | 416 |
female | 45-54 | 174 |
female | 55-64 | 85 |
female | 65+ | 40 |
male | 18-24 | 2717 |
male | 25-34 | 3967 |
male | 35-44 | 2121 |
male | 45-54 | 836 |
male | 55-64 | 491 |
male | 65+ | 173 |
このようなデータを Googleアナリティクスから R に引っ張ってくるのには RGA パッケージが便利。
#RGA パッケージでデータ取得library(RGA) authorize() prof <-list_profiles() dat1 <-get_ga(profile.id = prof$id[1], start.date ="2015-10-01", end.date ="2015-12-31", dimensions ="ga:userGender,ga:userAgeBracket", metrics ="ga:users")
以下、描画。
library(ggplot2) theme_set(theme_bw(20))#female 棒グラフ g1 <- ggplot(subset(dat1,user.gender =="female"), aes(x = user.age.bracket, y = users))+ geom_bar(stat ="identity", fill="tomato")+ scale_y_reverse(limits = c(max(dat1$users),0))+ coord_flip()+ xlab("")+ ylab("female")#male 棒グラフ g2 <-ggplot(subset(dat1,user.gender =="male"), aes(x = user.age.bracket, y = users))+ geom_bar(stat ="identity", fill="royalblue")+ coord_flip()+ xlab("")+ ylab("male")+ theme(axis.ticks.y = element_blank(),axis.text.y=element_blank())library(grid) grid.newpage() pushViewport(viewport(layout = grid.layout(1,2))) print(g1, vp=viewport(layout.pos.row =1, layout.pos.col =1)) print(g2, vp=viewport(layout.pos.row =1, layout.pos.col =2))
関数 scale_y_reverse と関数 ylim は同居できないという点がつまづきポイント。
scale_y_reverse 自身が軸のスケールを操作する関数なので、引数 limit に y 軸の制限を与えればよい。