読者です 読者をやめる 読者になる 読者になる

廿TT

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

Google アナリティクスよりデバイス別訪問推移(ggplot2 日付−時間スケール)

プロット

昼間はデスクトップからのアクセスが多くて、夜はモバイル&タブレットが多いとか、そういう傾向が見つかったらおもしろいかな、と思ったけど、特にそういうのはなかったです。

当ブログはトラフィック自体が多くないので、もうちょっと大規模なサイトなら傾向がはっきりするかも。

f:id:abrahamcow:20141121012857p:plain

コード

まずは RGoogleAnalytics でデータ取得。

library("RGoogleAnalytics")
query <- QueryBuilder()
access_token <- query$authorize()

ここでアクセストークンをコピペ。
RGoogleAnalytics をいじっている - 廿TT を参照。)

ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)

query$Init(start.date = "2014-11-01",
           end.date = "2014-11-20",
           dimensions = "ga:dateHour,ga:deviceCategory",
           metrics = "ga:sessions",
           #sort = "", 
           #filters="",
           #segment="",
           #max.results = ,
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
           access_token=access_token)

dat1 <- ga$GetReportData(query)
#データ取得完了
library(reshape2)
library(ggplot2)
library(scales)
#
#データ整形
t1 <- paste(
  substr(dat1$dateHour,1,4),
  substr(dat1$dateHour,5,6),
  substr(dat1$dateHour,7,8),
  sep="/")

t1 <-paste(t1,substr(dat1$dateHour,9,10))
t1 <- paste(t1,":00",sep="")
t1 <- as.POSIXlt(t1)
###以下プロット
theme_set(theme_bw(base_size=20, base_family="HiraKakuProN-W3")) 
#日本語フォントを指定
p1 <- ggplot(data=dat1, aes(x=t1,y=sessions))
p1 + geom_line(aes(colour=deviceCategory))+
  scale_x_datetime(labels = date_format("%m/%d %h:%M"), breaks =date_breaks("3 day"))+
  labs(colour="デバイス", x="", y="セッション")

説明

RGoogleAnalytics で取得したデータはこういう形式になってる。

> head(dat1)
    dateHour deviceCategory sessions
1 2014110100        desktop        5
2 2014110101        desktop        3
3 2014110101         tablet        1
4 2014110103        desktop        2
5 2014110104        desktop        1
6 2014110108        desktop        2

年月日時分秒を表すには "POSIXlt" を使う。
有効なWikiNameではありません - RjpWiki を参照。)

一度こういう文字列にして、

> t1 <- paste(
+   substr(dat1$dateHour,1,4),
+   substr(dat1$dateHour,5,6),
+   substr(dat1$dateHour,7,8),
+   sep="/")
> 
> t1 <-paste(t1,substr(dat1$dateHour,9,10))
> t1 <- paste(t1,":00",sep="")
> t1
  [1] "2014/11/01 00:00" "2014/11/01 01:00" "2014/11/01 01:00" "2014/11/01 03:00"
#以下略

as.POSIXlt() に入れてます。

ggplot2 の x 軸を年月日時分秒形式にするには scale_x_datetime を使う。
scale_x_datetime. ggplot2 0.9.3.1 を参照。)