Rで解析:簡単HeatMapパッケージ「pheatmap」の紹介

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

Pretty Heatmapsがタイトルに設定されているpheatmapを紹介します。2015年3月の時点でバージョンは1.0.2です。

このパッケージは、画像ファイルの出力がコマンド内で設定できるなど非常にシンプルな設計となっています。

今回は、RGoogleAnalyticsパッケージで「ある月の曜日毎の時間別アクセス数」を取得し、ヒートマップで表示するコマンドを紹介します。

スポンサーリンク

パッケージのインストールと準備

pheatmapのインストールは下記コマンドをRで実行します。

install.packages("pheatmap")

コマンドの紹介

コマンドを実行することで、出力例の図が作成できます。なお、pheatmapコマンドで利用できるデータの形式はmatrixです。datafreamでは無いのでご注意ください。紹介コマンドの詳細はコメントを確認してください。また、プロットせずにファイルを直接出力する方法は最下部のコマンドを参照してください。ファイル出力はpng、pdf、 tiff、 bmp、 jpegが対応しています。

#ライブラリの読み込み
library("pheatmap")
library("RGoogleAnalytics")

###GoogleAnalyticsへのアクセス設定#####
#クライアントIDを設定
client.id <- "クライアントIDを設定"
#クライアントシークレットを設定
client.secret <- "クライアントシークレットを設定"
#クライアントIDおよびシークレットのトークンを取得
oauth_token <- Auth(client.id, client.secret)
#データを取得するプロファイルidを設定
TableID <- "ga:プロファイルid"

#プロファイルの確認
#GetProfiles(oauth_token)
########

###取得年,月を設定#####
year <- 2014 #取得したい年を設定
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
########

#Dimensionsの設定
Dimensions <- c("ga:dayOfWeekName", "ga:hour")

#取得パラメータの設定
query.list <- Init(start.date = as.character(StartDate),
                      end.date = as.character(EndDate),
                      dimensions = Dimensions,
                      metrics = "ga:users",
                      max.results = 10000,
                      table.id = TableID)

#取得パラメーターを処理
query <- QueryBuilder(query.list)

#データの取得
AccessData <- GetReportData(query, oauth_token)

###データの整形#####
#曜日の並び順はここで設定
WeekDayAnaData <- data.frame(c("Sunday", "Monday", "Tuesday", "Wednesday",
                                  "Thursday", "Friday", "Saturday"))

#曜日の因子化
AccessData[, 1] <- factor(AccessData[, 1], levels = WeekDayAnaData[, 1])

#曜日の並び替え
AccessData <- AccessData[order(AccessData[, 1]), ]

###データの整形#####
#wideに変換
PlotData <- reshape(AccessData,
                       timevar = "dayOfWeekName",
                       idvar = "hour",
                       direction = "wide")

#rownameの修正
rownames(PlotData) <- PlotData[, 1]
PlotData <- PlotData[, -1]

#colnameの修正
colnames(PlotData) <- WeekDayAnaData[, 1]
########

#データのプロット
pheatmap(PlotData,
         color = colorRampPalette(c("royalblue", "white", "firebrick3"))(100),
         cluster_row = FALSE,
         cluster_col = FALSE,
         display_numbers = TRUE,
         number_format = "%1.0f",
         number_color = "black")

#ファイルの出力,filetypeはpng, pdf, tiff, bmp, jpegが対応,ファイル名の拡張子を変更します。
pheatmap(PlotData,
         color = colorRampPalette(c("royalblue", "white", "firebrick3"))(100),
         cluster_row = FALSE,
         cluster_col = FALSE,
         display_numbers = TRUE,
         number_format = "%1.0f",
         number_color = "black",
         filename = "HeatMap.png")

出力例

HeatMap

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

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