バルーンプロットの紹介
下表はぼくの 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:セッション。訪問回数。
このような集計表(分割表)を図示する手段の一つにバルーンプロットがあります。
表の各セルの値を、セル内の丸の大きさに対応させて表すものです。
各行(列)の灰色の帯は各行(列)の和に対応しています。
以下にこの図の書き方を記載します。
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="")
これだけ。
かんたんですね。
追記:集合棒グラフ
後から見返して、このデータセットに関しては、ふつうによく使われる横並びの棒グラフにしたほうがわかりやすいと思った。
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)
関連エントリ
同じく、分割表を図示する手段としてモザイクプロットや色付きテーブル(ヒートマップ)もあります。