Rとウェブ解析:GoogleAnalyticsのデータでインタラクティブなヒートマップを作成


RGoogleAnalyticsパッケージで取得した「月毎の毎日のpageviews」をplotlyパッケージでインタラクティブなヒートマップを作成するコードを紹介します。おまけで、ggplotでヒートマップを作成するコードを紹介します。RGoogleAnalyticsとplotlyパッケージのインストールについては過去の記事を参考にしてください。なお、RStudioではRGoogleAnalyticsパッケージでデータを取得後にplotlyパッケージを実行するとデータ送信時にエラーが起きるようです。なので、RGoogleAnalyticsパッケージでデータを取得後に一度RStudioを終了し、plotlyパッケージを実行しています。最下部に出力例があります。

RGoogleAnalytics
Rとウェブ解析:新GoogleAnalyticsパッケージの使い方

plotly
Rでインタラクティブなグラフ:便利なPlotlyライブラリのご紹介


RGoogleAnalyticsパッケージでデータを取得

下記のコマンドは月ごとに毎日のpageviewsを取得し、エクセルファイルを出力します。

#パッケージの読み込み
library("RGoogleAnalytics")
library("XLConnect")
library("tcltk")

###取得年を設定#####
year <- 2014 #取得したい年を設定 StartDate <- seq.Date(as.Date(paste(year, "-01-01", sep = "")), as.Date(paste(year, "-12-31", sep = "")), by = "month") EndDate <- as.Date(format(as.Date(format(StartDate,"%Y%m01"),"%Y%m%d") + 31, "%Y%m01"), "%Y%m%d") - 1 ######## ###GoogleAnalyticsへのアクセス設定##### #クライアントIDを設定 client.id <- "XXXXXX" #クライアントシークレットを設定 client.secret <- "XXXXXX" #クライアントIDおよびシークレットのトークンを取得 oauth_token <- Auth(client.id, client.secret) #トークンファイルを保存している場合は、ディレクトリを下記を実行。保存方法は過去記事を参考にしてください。 load(paste(as.character(tkgetOpenFile(title = "トークンファイルを選択", filetypes = '{"トークンファイル" {"*"}}', initialfile = "*")), sep = "", collapse =" ")) ######## #プロファイルの取得。 GetProfiles(oauth_token) ###アクセスデータ取得の準備##### #データを取得するプロファイルidを設定 TableID <- "ga:XXXXXX" #毎日のデータ。 Dimensions <- "ga:date" #アクセスデータの取得、日の設定。 AnaData <- data.frame(1:31) #12ヶ月分の処理 for(n in 1:12){ #取得パラメータの設定 query.list <- Init(start.date = as.character(StartDate[n]), end.date = as.character(EndDate[n]), dimensions = Dimensions, metrics = "ga:pageviews", max.results = 1000, table.id = TableID) #取得パラメーターを処理 query <- QueryBuilder(query.list) #データの取得。 AnalyticsData <- GetReportData(query, oauth_token)[, 2] #31日に長さを調整 length(AnalyticsData) <- 31 #Dataの結合 AnaData <- cbind(AnaData, AnalyticsData) } #データ行名に日と月名を付与 colnames(AnaData) <- c("Day", month.name) #データの書き出し、保存フォルダを選択して書き出し。 setwd(paste(as.character(tkchooseDirectory(title = "保存ディレクトリを選択"), sep = "", collapse =""))) writeWorksheetToFile(paste("アクセスデータ.xlsx", sep = ""), data = AnaData, sheet = "アクセスデータ") ######## [/code]


plotlyでインタラクティブなヒートマップを描写

#ライブラリの読み込み
library("plotly")
library("XLConnect")
library("tcltk")

###データの読み込み#####
MasterAnaData <- loadWorkbook(paste(as.character(tkgetOpenFile(title = "GoogleAnalyticsデータを選択", filetypes = '{"xlsxファイル" {".xlsx"}}', initialfile = "*.xlsx")), sep = "", collapse =" ")) AnaData <- readWorksheet(MasterAnaData, sheet = 1) ######## #plotlyへのアクセス設定。plotlyのサイトで取得したusernameとkeyを入力してください。 py <- plotly(username = "XXXXXXX", key = "XXXXXXX") #プロットデータの準備 data <- list( list( z = eval(parse(text = paste(paste("list(c(", paste(AnaData[1, 2:13], collapse = ","), "),", sep = ""), paste("list(", apply(AnaData[-1, 2:13], 1, paste, collapse = ","), ")", sep = "", collapse = ","), ")", sep = ""))), x = month.name, y = 1:31, colorscale = "Portland", reversescale = FALSE, type = "heatmap" ) ) #plotlyへデータを送信 r <- py$plotly(data) #プロットをブラウザで表示 browseURL(r$url) ######## [/code]


おまけ、ggplot2でヒートマップを描写

gapmapパッケージを導入することでggplot2でヒートマップを手軽に描写できます。gapmapのインストールは過去の記事を参照ください。

Rとウェブ解析:ggplot2でプロットするヒートマップ「gapmap」パッケージ

#ライブラリの読み込み
library("gapmap")
library("reshape")
library("XLConnect")
library("tcltk")

###データの読み込み#####
MasterAnaData <- loadWorkbook(paste(as.character(tkgetOpenFile(title = "GoogleAnalyticsデータを選択", filetypes = '{"xlsxファイル" {".xlsx"}}', initialfile = "*.xlsx")), sep = "", collapse =" ")) AnaData <- readWorksheet(MasterAnaData, sheet = 1) ######## PlotData <- melt(AnaData, id.var = "Day") #ヒートマップの作成。色はscale_fill_gradientで設定。 ggplot(PlotData, aes(as.factor(PlotData[, 2]), PlotData[, 1], group = PlotData[, 2])) + scale_fill_gradient(low="white",high="red") + geom_tile(aes(fill = value)) + scale_x_discrete(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) + labs(x = "", y = "") + theme(axis.ticks = element_blank(), axis.text.x = element_text(size = 8, angle = 260, hjust = 0, colour = "grey50")) ######## [/code]


コード実行時の出力

plotlyでインタラクティブなヒートマップ

おまけ、ggplot2でヒートマップ


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

スポンサードリンク