廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

(R + Google アナリティクス)バルーンプロットの例。年齢層別デバイス使用状況。

バルーンプロットの紹介

下表はぼくの Google アナリティクスアカウントから持ってきたデータです。

deviceCategory userAgeBracket sessions
desktop 18-24 1575
desktop 25-34 4787
desktop 35-44 2157
desktop 45-54 561
desktop 55-64 233
desktop 65+ 165
mobile 18-24 35
mobile 25-34 72
mobile 35-44 61
mobile 45-54 27
tablet 18-24 69
tablet 25-34 535
tablet 35-44 497
tablet 45-54 138
tablet 55-64 43
tablet 65+ 36
  • deviceCategory:サイト訪問時に使用した端末の分類。
  • userAgeBracket:年齢層。
  • sessions:セッション。訪問回数。

このような集計表(分割表)を図示する手段の一つにバルーンプロットがあります。

表の各セルの値を、セル内の丸の大きさに対応させて表すものです。

f:id:abrahamcow:20150214013401p:plain

各行(列)の灰色の帯は各行(列)の和に対応しています。

f:id:abrahamcow:20150214013704p:plain

以下にこの図の書き方を記載します。

R のコード

RGoogleAnalytics でデータ抽出

アカウントのオーサライ
library("RGoogleAnalytics")
query <- QueryBuilder()
access_token <- query$authorize()

ここでアクセストークンをコピペ。

詳しくは RGoogleAnalytics をいじっている - 廿TT を参照。

データ抽出時のクエリ
ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)

sta <- "2015-01-01" #データ取得期間は
en <- "2015-01-31" #とりあえず直近一ヶ月にした。

query$Init(start.date = sta,
           end.date = en,
           dimensions = "ga:deviceCategory,ga:userAgeBracket",  
           metrics = "ga:sessions", 
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
           #           filter = "",
           access_token=access_token)

DCAB <- ga$GetReportData(query)  #データ取得完了

詳しくは R から API で Google アナリティクスのデータを読むこめるパッケージ, RGoogleAnalytics のクエリ作成方法 - 廿TT を参照。

この DCAB が最初の表のデータです。

> head(DCAB)
  deviceCategory userAgeBracket sessions
1        desktop          18-24     1575
2        desktop          25-34     4787
3        desktop          35-44     2157
4        desktop          45-54      561
5        desktop          55-64      233
6        desktop            65+      165

バルーンプロットの描画

gplots パッケージを使います。

library(gplots)
#nihongo() macユーザーは日本語のフォントを指定
balloonplot(DCAB$deviceCategory,DCAB$userAgeBracket,DCAB$sessions,
             main="年齢層別端末使用状況",xlab="",ylab="")

これだけ。
かんたんですね。

追記:集合棒グラフ

後から見返して、このデータセットに関しては、ふつうによく使われる横並びの棒グラフにしたほうがわかりやすいと思った。

f:id:abrahamcow:20150214154530p:plain

library(ggplot2)
library(RColorBrewer)
library(scales)

theme_set(theme_bw(15,"HiraKakuPro-W3"))

ggplot(DCAB,aes(x=userAgeBracket,y=sessions,fill=deviceCategory))+
  geom_bar(stat="identity",position = "dodge")+
  scale_fill_brewer(palette = "Set2")+
  labs(x="年代",y="セッション数",fill="デバイスカテゴリ")+
  scale_y_continuous(labels = comma)

関連エントリ

同じく、分割表を図示する手段としてモザイクプロットや色付きテーブル(ヒートマップ)もあります。

参考文献

統計データの視覚化 (Rで学ぶデータサイエンス 12)

統計データの視覚化 (Rで学ぶデータサイエンス 12)

pp.181-182 を参照。