Quantcast
Channel: グラフ - 廿TT
Viewing all articles
Browse latest Browse all 123

ggplot2 で Google アナリティクスデータの人口ピラミッド

$
0
0

下表のデータを人口ピラミッドの形で描いてみる。

(もうちょっときれいに描ける人いそう。ご意見求む。)

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))

f:id:abrahamcow:20160119070913p:plain

関数 scale_y_reverse と関数 ylim は同居できないという点がつまづきポイント。

scale_y_reverse 自身が軸のスケールを操作する関数なので、引数 limit に y 軸の制限を与えればよい。


Viewing all articles
Browse latest Browse all 123

Trending Articles