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

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 <- "&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;ID&#12434;&#35373;&#23450;"
#&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;&#12471;&#12540;&#12463;&#12524;&#12483;&#12488;&#12434;&#35373;&#23450;
client.secret <- "&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;&#12471;&#12540;&#12463;&#12524;&#12483;&#12488;&#12434;&#35373;&#23450;"
#&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;ID&#12362;&#12424;&#12403;&#12471;&#12540;&#12463;&#12524;&#12483;&#12488;&#12398;&#12488;&#12540;&#12463;&#12531;&#12434;&#21462;&#24471;
oauth_token <- Auth(client.id, client.secret)
#&#12487;&#12540;&#12479;&#12434;&#21462;&#24471;&#12377;&#12427;&#12503;&#12525;&#12501;&#12449;&#12452;&#12523;id&#12434;&#35373;&#23450;
TableID <- "ga:&#12503;&#12525;&#12501;&#12449;&#12452;&#12523;id"

#&#12503;&#12525;&#12501;&#12449;&#12452;&#12523;&#12398;&#30906;&#35469;
#GetProfiles(oauth_token)
########

###&#21462;&#24471;&#24180;,&#26376;&#12434;&#35373;&#23450;#####
year <- 2014 #&#21462;&#24471;&#12375;&#12383;&#12356;&#24180;&#12434;&#35373;&#23450;
month <- 7 #&#21462;&#24471;&#12375;&#12383;&#12356;&#26376;&#12434;&#35373;&#23450;
########

###&#21462;&#24471;&#24180;,&#26376;&#12398;&#12505;&#12463;&#12488;&#12523;&#12434;&#20316;&#25104;#####
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&#12398;&#35373;&#23450;
Dimensions <- c("ga:dayOfWeekName", "ga:hour")

#&#21462;&#24471;&#12497;&#12521;&#12513;&#12540;&#12479;&#12398;&#35373;&#23450;
query.list <- Init(start.date = as.character(StartDate),
                      end.date = as.character(EndDate),
                      dimensions = Dimensions,
                      metrics = "ga:users",
                      max.results = 10000,
                      table.id = TableID)

#&#21462;&#24471;&#12497;&#12521;&#12513;&#12540;&#12479;&#12540;&#12434;&#20966;&#29702;
query <- QueryBuilder(query.list)

#&#12487;&#12540;&#12479;&#12398;&#21462;&#24471;
AccessData <- GetReportData(query, oauth_token)

###&#12487;&#12540;&#12479;&#12398;&#25972;&#24418;#####
#&#26332;&#26085;&#12398;&#20006;&#12403;&#38918;&#12399;&#12371;&#12371;&#12391;&#35373;&#23450;
WeekDayAnaData <- data.frame(c("Sunday", "Monday", "Tuesday", "Wednesday",
                                  "Thursday", "Friday", "Saturday"))

#&#26332;&#26085;&#12398;&#22240;&#23376;&#21270;
AccessData[, 1] <- factor(AccessData[, 1], levels = WeekDayAnaData[, 1])

#&#26332;&#26085;&#12398;&#20006;&#12403;&#26367;&#12360;
AccessData <- AccessData[order(AccessData[, 1]), ]

###&#12487;&#12540;&#12479;&#12398;&#25972;&#24418;#####
#wide&#12395;&#22793;&#25563;
PlotData <- reshape(AccessData,
                       timevar = "dayOfWeekName",
                       idvar = "hour",
                       direction = "wide")

#rowname&#12398;&#20462;&#27491;
rownames(PlotData) <- PlotData[, 1]
PlotData <- PlotData[, -1]

#colname&#12398;&#20462;&#27491;
colnames(PlotData) <- WeekDayAnaData[, 1]
########

#&#12487;&#12540;&#12479;&#12398;&#12503;&#12525;&#12483;&#12488;
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")

#&#12501;&#12449;&#12452;&#12523;&#12398;&#20986;&#21147;,filetype&#12399;png, pdf, tiff, bmp, jpeg&#12364;&#23550;&#24540;,&#12501;&#12449;&#12452;&#12523;&#21517;&#12398;&#25313;&#24373;&#23376;&#12434;&#22793;&#26356;&#12375;&#12414;&#12377;&#12290;
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

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

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.
タイトルとURLをコピーしました