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 = "アクセスデータ")
########
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)
########
おまけ、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"))
########
コード実行時の出力
plotlyでインタラクティブなヒートマップ
おまけ、ggplot2でヒートマップ

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