「ComplexHeatmap」、「RGA」、「scales」パッケージを利用してGoogle Analyticsのデータをプロットするコマンドの紹介です。実行コマンドはGoogle Analyticsで取得できる「特定年月の、時間と曜日別のセッション」をプロットする内容です。
なお、コマンドを実行するにはGoogle Analyticsの設定が必要です。Google Analyticsの設定は他サイトを参照ください。
各パッケージの紹介記事です。
・Rでウェブ解析:Google Analyticsからデータを取得「RGA」パッケージの紹介
https://www.karada-good.net/analyticsr/r-141/
・Rで解析:理想のヒートマップ作成に役に立ちます「ComplexHeatmap」パッケージ
https://www.karada-good.net/analyticsr/r-437/
・Rで解析:カラーパレット作成や連続・離散スケールの操作が簡単「scales」パッケージの紹介
https://www.karada-good.net/analyticsr/r-109/
実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.3で確認しています。
実行コマンド
詳細はコメント、コマンドのヘルプを確認してください。
#パッケージのインストール install.packages("devtools") devtools::install_github("jokergoo/ComplexHeatmap") install.packages("RGA") #パッケージの読み込み library("ComplexHeatmap") library("RGA") library("scales") ###GoogleAnalyticsと連携##### authorize() ##### ###データを読み込みidを確認##### list_profiles() ######## #データ取得idの設定 #数値はダミーです IDSet <- "ga:99999999" ######## ###取得年,月を設定##### year <- 2020 #取得したい年を設定 month <- 7 #取得したい月を設定 ######## ###取得年,月のベクトルを作成##### StartDate <- as.Date(paste(year, "-", formatC(month, width = 2, flag="0"), "-01", sep = "")) EndDate <- as.Date(format(as.Date(format(StartDate,"%Y%m01"),"%Y%m%d") + 31, "%Y%m01"), "%Y%m%d") - 1 ######## ###曜日の並び順はここで設定##### WeekDayAnaData <- data.frame(c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")) ######## ###曜日/時間別のセッション数を取得##### GetData <- get_ga(profileId = IDSet, start.date = StartDate, end.date = EndDate, metrics = "ga:sessions", dimensions = "ga:dayOfWeekName, ga:hour") ###### ###取得データの整形##### #曜日の因子化 GetData[, 1] <- factor(GetData[, 1], levels = WeekDayAnaData[, 1]) #曜日で並び替え GetData <- GetData[order(GetData[, 1]), ] #曜日名を基準に時間別セッション数を計算 HeatMapData <- reshape(GetData, idvar = "hour", timevar = "dayOfWeekName", direction = "wide") #時間をrow.namesに付与 row.names(HeatMapData) <- HeatMapData[, 1] #時間を削除 HeatMapData <- HeatMapData[, -1] #colnamesを変更 colnames(HeatMapData) <- WeekDayAnaData[, 1] ######## ###ヒートマップ体裁データの作成##### #曜日毎のヒストグラムを作成 DaySession <- HeatmapAnnotation(textplot = anno_text(colSums(HeatMapData), gp = gpar(col = "blue")), barplot = anno_barplot(colSums(HeatMapData), axis = FALSE, axis_side = "left", ylim = c(0, max(colSums(HeatMapData))*1.2), gp = gpar(fill = as.character(cscale(colSums(HeatMapData), seq_gradient_pal("white", "red")))) ), annotation_height = c(0.5, 2) ) #時間毎のヒストグラムを作成 HourSession <- rowAnnotation(rbarplot = row_anno_barplot(rowSums(HeatMapData), axis = FALSE, axis_side = "top", ylim = c(0, max(rowSums(HeatMapData))*1.2), gp = gpar(fill = as.character(cscale(rowSums(HeatMapData), seq_gradient_pal("white", "red"))))), rtextplot = row_anno_text(rowSums(HeatMapData), gp = gpar(col = "blue")), width = unit(3, "cm")) ######## ###ヒートマップ描写##### Heatmap(HeatMapData, cluster_rows = FALSE, cluster_columns = FALSE, top_annotation = DaySession, top_annotation_height = unit(3, "cm"), row_names_side = "left", row_title = "Hour", #column_title = paste0("GoogleAnalytics:", month, "月の時間/曜日別セッション数"), column_title_side = "bottom", name = "Session", #col = cscale(c(t(HeatMapData)), seq_gradient_pal("yellow", "blue"))) ) + HourSession decorate_annotation("barplot", {grid.text("Day Sessions", unit(-2, "mm"), just = "bottom", rot = 90, gp = gpar(fontsize = 10))})
出力結果
寝る時間はみんな一緒です。
少しでも、あなたのウェブや実験の解析が楽になりますように!!