本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

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を入力"

###取得年/月を設定#####
year <- 2016
month <- 1

#範囲を計算
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

#曜日,日のusers,sessions,pageviewsを取得
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")

#日データを文字に変換
GetData[, 1] <- paste0(GetData[, 1], "/", GetData[, 2])

#時間データを2桁に整形
GetData[, 3] <- formatC(GetData[, 3], width = 2, flag = "0")

#プロット
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で出力
gg_animate(DataPlot, filename = "GAData.html", title_frame = TRUE)

#参考:月間の時間別アクセス総数を棒グラフで表示
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

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

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.