時系列データをカレンダー形式にプロットするパッケージの紹介です。ggplot2パッケージのコマンドが適応できるので便利だと思います。
「googleAnalyticsR」パッケージでGoogleAnalyticsから「からだにいいもの」のアクセスデータを取得しデータ例として使用しています。
パッケージバージョンは0.2.8。windows 10のR version 3.4.2で動作を確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("sugrrants")
実行コマンド
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("sugrrants")
###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
#viridisパッケージがなければインストール
if(!require("viridis", quietly = TRUE)){
install.packages("viridis");require("viridis")
}
#googleAnalyticsRパッケージでGoogleAnalyticsデータを取得
if(!require("googleAnalyticsR", quietly = TRUE)){
install.packages("googleAnalyticsR");require("googleAnalyticsR")
}
#ログイン
ga_auth()
#viewIdの確認
ga_account_list()
#データの取得
TestData <- tibble(google_analytics(viewId = "viewIdを入力", max = 3000,
date_range = c("2021-10-01", "2021-12-31"),
metrics = c("users", "sessions", "pageviews"),
dimensions = c("dateHour", "date", "month",
"dayOfWeekName", "hour",
"deviceCategory")))
#データの確認
TestData
# A tibble: 2,720 x 9
dateHour date month dayOfWeekName hour deviceCategory users sessions pageviews
<chr> <date> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 2021100100 2021-10-01 10 Friday 00 desktop 4 4 4
2 2021100101 2021-10-01 10 Friday 01 desktop 5 5 5
3 2021100103 2021-10-01 10 Friday 03 desktop 2 2 2
4 2021100105 2021-10-01 10 Friday 05 desktop 2 2 3
5 2021100106 2021-10-01 10 Friday 06 desktop 2 2 2
6 2021100107 2021-10-01 10 Friday 07 desktop 3 3 3
7 2021100108 2021-10-01 10 Friday 08 desktop 10 11 13
8 2021100109 2021-10-01 10 Friday 09 desktop 16 16 19
9 2021100110 2021-10-01 10 Friday 10 desktop 20 20 24
10 2021100111 2021-10-01 10 Friday 11 desktop 13 13 13
# ... with 2,710 more rows
########
#プロットデータの事前準備:frame_calendarコマンド
PlotData <- TestData %>%
frame_calendar(x = hour, y = users, date = date, calendar = "monthly")
#ggplot2でデータをプロット:アクセスの時間推移
PlotLine <- ggplot(data = PlotData) +
geom_line(data = filter(PlotData, deviceCategory == "desktop"),
aes(x = .hour, y = .users, group = date, col = deviceCategory)) +
geom_line(data = filter(PlotData, deviceCategory == "mobile"),
aes(x = .hour, y = .users, group = date, col = deviceCategory)) +
scale_color_brewer(palette = "Dark2") +
theme(legend.position = "bottom",
panel.grid = element_blank())
#プロットへラベルを付与:prettifyコマンド
prettify(PlotLine, size = 3,
label.padding = unit(0.25, "lines"))
###他の参考例#####
###アクセスの時間推移をfacet###
#データ準備
FacetData <- filter(PlotData, deviceCategory != "tablet") %>%
frame_calendar(x = hour, y = users,
date = date, calendar = "monthly")
#プロット
FacetLine <- ggplot(data = FacetData,
aes(x = .hour, y = .users,
group = date, col = deviceCategory)) +
geom_line() +
scale_color_brewer(palette = "Dark2") +
facet_grid(deviceCategory ~.) +
theme(legend.position = "bottom",
panel.grid = element_blank())
#プロットへラベルを付与
prettify(FacetLine, size = 3)
###日の総アクセス数でヒートマップ###
#データ準備
HeatPlotData <- TestData %>%
group_by(date, month) %>%
summarise(SumUsers = sum(users)) %>%
ungroup() %>%
frame_calendar(x = 1, y = 1,
date = date, calendar = "monthly")
#x軸のラベル位置を調整
HeatPlotData$.x <- HeatPlotData$.x + 0.025
HeatPlotData$.y <- HeatPlotData$.y + 0.08
#ggplot2でデータをプロット
HeatPlot <- ggplot(data = HeatPlotData, aes(x = .x, y = .y)) +
geom_tile(aes(fill = SumUsers)) +
scale_fill_viridis() +
theme(legend.position = "bottom",
panel.grid = element_blank())
#X軸へラベルを付与
prettify(HeatPlot, label = "text")
出力例
・アクセスの時間推移

・アクセスの時間推移をfacet

・日の総アクセス数でヒートマップ

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