「gtrendsR」パッケージ、「tidyverse」パッケージ、「gganimate」パッケージを利用したアニメーションgifの作成例です。何かの参考になればと思います。
「gtrendsR」パッケージは下記を確認ください。
実行コマンドはwindows 11のR version 4.1.2で確認しています。
実行コマンド
詳細はコメント、各パッケージのヘルプを確認してください。
#gtrendsRパッケージがなければインストール
if(!require("gtrendsR", quietly = TRUE)){
install.packages("gtrendsR");require("gtrendsR")
}
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
#gganimateパッケージがなければインストール
if(!require("gganimate", quietly = TRUE)){
install.packages("gganimate");require("gganimate")
}
#Rでお遊び:何かに使えるかも?各都道府県を四角で表示!
#https://www.karada-good.net/analyticsr/r-597/
#日本地図にinterest_by_regionを表示
JpanMiniMap <- tibble(
#都道府県名
Pref = c("北海道", "青森県", "岩手県", "宮城県", "福島県", "茨城県", "千葉県", "秋田県", "山形県",
"新潟県", "栃木県", "埼玉県", "東京都", "群馬県", "山梨県", "神奈川県", "富山県",
"長野県", "静岡県", "石川県", "福井県", "岐阜県", "愛知県", "滋賀県", "三重県",
"京都府", "奈良県", "和歌山県", "兵庫県", "大阪府", "鳥取県", "岡山県", "島根県",
"広島県", "香川県", "徳島県", "愛媛県", "高知県", "山口県", "福岡県", "大分県",
"宮崎県", "佐賀県", "熊本県", "鹿児島県", "長崎県", "沖縄県"),
EPref = c("Hokkaido", "Aomori", "Iwate", "Miyagi", "Fukushima", "Ibaraki", "Chiba", "Akita", "Yamagata",
"Niigata", "Tochigi", "Saitama", "Tokyo", "Gunma", "Yamanashi", "Kanagawa", "Toyama",
"Nagano", "Shizuoka", "Ishikawa", "Fukui", "Gifu", "Aichi", "Shiga", "Mie",
"Kyoto", "Nara", "Wakayama", "Hyogo", "Osaka", "Tottori", "Okayama", "Shimane",
"Hiroshima", "Kagawa", "Tokushima", "Ehime", "Kochi", "Yamaguchi", "Fukuoka", "Oita",
"Miyazaki", "Saga", "Kumamoto", "Kagoshima", "Nagasaki", "Okinawa"),
#各都道府県の位置
x = c(15.9, 15.5, 16, 16, 15.7, 15.7, 16, 15, 15, 14.7, 14.7, 15,
15, 13.7, 14, 14, 12.7, 13, 13, 11.7, 11.7, 12, 12, 11, 11,
10, 10, 10, 9, 9, 8, 8, 7, 7, 7.5, 7.5, 6.5, 6.5, 6, 4.5, 4.5,
4.5, 3.5, 3.5, 3.5, 2.5, 2),
y = c(12.9, 10.5, 9.5, 8.5, 7.5, 6.5, 5.5, 9.5, 8.5, 7.5, 6.5, 5.5,
4.5, 6.5, 5.5, 4.5, 6.5, 5.5, 4.5, 7.5, 6.5, 5.5, 4.5, 5.5,
4.5, 6, 5, 4, 5.5, 4.5, 6, 5, 6, 5, 3.5, 2.5, 3.5, 2.5, 5.5, 5, 4,
3, 5, 4, 3, 5, 2),
#widthとheightはタイルの大きさ
width = c(2.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1),
height = c(2.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1))
###プロットデータの作成#####
#空リスト
TrendListData <- list()
#取得データ期間
Time <- c("today 12-m", "today 3-m", "today 1-m")
#データを取得
for(i in seq(Time)){
#gtrendsコマンド
TrendListData[[i]] <- gtrends(keyword = c("鬼滅の刃"), geo = c("JP"),
time = Time[i], gprop = "web", category = 0) %>%
#gterndsコマンド結果のリストから"interest_by_region"を抽出
.[["interest_by_region"]] %>%
#先頭にデータ期間を付与
mutate(Date = Time[i], .before = location) %>%
#locationの" Prefecture"を削除
mutate(location = str_replace_all(location, pattern = " Prefecture",
replacement = "")) %>%
#hitsのNAを0に置換
mutate(hits = replace_na(hits, 0)) %>%
#必要なデータを選択
select(Date, location, hits)
}
#結果を結合しhits以外をfactor化
TrendData <- tibble(bind_rows(TrendListData)) %>%
#JpanMiniMap$EPrefの基準でlocationをfactor化
mutate(EPref = factor(location, levels = JpanMiniMap$EPref),
.keep = "unused", .before = hits) %>%
#Timeの基準でDateをfactor化
mutate(Date = factor(Date, levels = Time),
.keep = "unused", .before = EPref) %>%
#並び替え
arrange(EPref)
#TrendDataをJpanMiniMapに結合
TrendData %>%
inner_join(JpanMiniMap, by = "EPref") -> PlotData
########
#gifアニメーション作成のためにgganimateパッケージのtransition_statesコマンドを使う
AnimePlot <- ggplot(PlotData,
aes(x = x, y = y,
width = width, height = height)) +
geom_tile(aes(fill = hits),
color = "grey", show.legend = TRUE) +
geom_text(aes(label = Pref), size = 6) +
labs(title ="検索ワード[鬼滅の刃]_Before_{closest_state}_interest_by_region") +
coord_fixed(ratio = 1) +
scale_fill_distiller(palette = "Spectral", name = "hits") +
theme_void() +
transition_states(Date,
transition_length = 3,
state_length = 1,
wrap = FALSE)
#作業フォルダに保存
options(gganimate.dev_args = list(width = 800, height = 600))
anim_save("Gtrend.gif", AnimePlot, nframes = 50)
出力例
“today 12-m”、”today 3-m”、”today 1-m”の順に画像が変化します。

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