Rでコマンド:gganimateとRGAパッケージの連携例

Rの解析に役に立つ記事
スポンサーリンク

ggplot2パッケージの出力をアニメーション化する「gganimate」パッケージとGoogle Analyticsのデータ取得に便利な「RGA」パッケージの連携例です。

なお、「gganimate」パッケージの設計上、geom_barコマンドのアニメーションはうまく表示されません。紹介コマンドではgeom_pointコマンドと指定範囲を塗りつぶすgeom_ribbonコマンドを使用しています。

・gganimateパッケージの紹介
 https://www.karada-good.net/analyticsr/r-401/

・RGAパッケージの紹介
 https://www.karada-good.net/analyticsr/r-141/

実行コマンドはR version 3.2.3で確認しています。

スポンサーリンク

実行コマンド

詳細はコメント、コマンドのヘルプを確認してください。

#パッケージの読み込み
library("RGA")
library("gganimate")
library("ggplot2")

#authorizeコマンド
authorize()

#読み込みidを確認:list_profilesコマンド
#list_profiles()

#データ取得idを設定
IDSet <- "ga:id&#12434;&#20837;&#21147;"

###&#21462;&#24471;&#24180;/&#26376;&#12434;&#35373;&#23450;#####
year <- 2016
month <- 1

#&#31684;&#22258;&#12434;&#35336;&#31639;
StartDate <- as.Date(paste0(year, "-", formatC(month, width = 2, flag = "0"), "-01"))
EndDate <- as.Date(format(as.Date(format(StartDate, "%Y%m01"), "%Y%m%d") + 31, "%Y%m01"),
                   "%Y%m%d") - 1

#&#26332;&#26085;,&#26085;&#12398;users,sessions,pageviews&#12434;&#21462;&#24471;
GetData <- get_ga(profileId = IDSet, start.date = StartDate, end.date = EndDate,
                  metrics = "ga:users, ga:sessions, ga:pageviews",
                  dimensions = "ga:date, ga:dayOfWeekName, ga:hour")

#&#26085;&#12487;&#12540;&#12479;&#12434;&#25991;&#23383;&#12395;&#22793;&#25563;
GetData[, 1] <- paste0(GetData[, 1], "/", GetData[, 2])

#&#26178;&#38291;&#12487;&#12540;&#12479;&#12434;2&#26689;&#12395;&#25972;&#24418;
GetData[, 3] <- formatC(GetData[, 3], width = 2, flag = "0")

#&#12503;&#12525;&#12483;&#12488;
DataPlot <- ggplot(GetData, aes(x = GetData[, 3], y = GetData[, 4],
                                color = "red", frame = GetData[, 1])) +
  geom_point(show.legend = FALSE) +
  geom_ribbon(aes(ymin = 0, ymax = GetData[, 4]),
              group = 1, fill = "blue", alpha = 0.6, show.legend = FALSE) +
  labs(x = "Hour", y = "users")

#html&#12391;&#20986;&#21147;
gg_animate(DataPlot, filename = "GAData.html", title_frame = TRUE)

#&#21442;&#32771;:&#26376;&#38291;&#12398;&#26178;&#38291;&#21029;&#12450;&#12463;&#12475;&#12473;&#32207;&#25968;&#12434;&#26834;&#12464;&#12521;&#12501;&#12391;&#34920;&#31034;
ggplot(GetData, aes(x = GetData[, 3], y = GetData[, 4], fill = "red")) +
  geom_bar(stat = 'identity', show.legend = FALSE, width = 0.8) +
  labs(x = "Hour", y = "Total Users")

出力結果

・「gganimate」と「RGA」パッケージの連携例
本サイトでは表示エリアの横サイズが520px以下だと表示が欠けてしまいます。試していませんが、出力されるhtml及びCSSを変更することでレスポンシブル化が可能かと思います。

・参考:月間の時間別アクセス総数を棒グラフで表示

gganimateRga2

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました