「ggplot2」パッケージを利用して、ツリーマップを描写するのに便利なパッケージの紹介です。gganimateパッケージのtransition_timeコマンドを利用してgifアニメーションの作成例も「コマンドの紹介」最下部に紹介します。
パッケージバージョンは2.5.5。実行コマンドはwindows 11のR version 4.1.2で動作を確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("treemapify")
コマンドの紹介
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み:libraryコマンド library("treemapify") #ggplot2を利用するためにtidyverseパッケージを読み込み #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } ###データ例の作成##### n <- 24 TestData <- data.frame("SubGroup" = sample(c("KA", "RA", "DA"), n, replace = TRUE), "ID" = sample(letters[1:24], n, replace = FALSE), "Area" = 1:n, "Point" = 0.1:(0.1*n), "Facet" = sample(letters[1:2], n, replace = TRUE)) ######## #ツリーマップ作成:geom_treemapコマンド ggplot(TestData, aes(area = Area, fill = Point)) + geom_treemap() + scale_fill_gradient2() #ツリーマップにテキストを追加:geom_treemap_textコマンド #書式設定:fontfaceオプション #エリアサイズに文字サイズを合わせる:geouオプション ggplot(TestData, aes(area = Area, fill = Point, label = ID)) + geom_treemap() + geom_treemap_text(fontface = "bold", colour = "yellow", place = "centre", grow = TRUE) + scale_fill_gradient2() #ツリーマップにサブグループの情報を付与:geom_treemap_subgroup_XXXコマンド ###分割線を追加:geom_treemap_subgroup_borderコマンド ###テキストを追加:geom_treemap_subgroup_textコマンド ggplot(TestData, aes(area = Area, fill = Point, label = ID, subgroup = SubGroup)) + geom_treemap() + geom_treemap_subgroup_border(colour = "red") + geom_treemap_subgroup_text(place = "centre", grow = TRUE, alpha = 0.8, colour = "red", fontface = "italic", min.size = 0) + geom_treemap_text(fontface = "bold", colour = "green", place = "centre", grow = TRUE, alpha = 0.5) + scale_fill_gradient2() #参考:facet表示;ggplot2::facet_wrapコマンドを適応 ggplot(TestData, aes(area = Area, fill = SubGroup, label = ID)) + geom_treemap() + geom_treemap_text(fontface = "bold", colour = "white", place = "centre", grow = TRUE) + facet_wrap( ~ Facet) + scale_fill_brewer(palette = "Set1") ###参考:gifアニメーション###### #gganimateパッケージがなければインストール if(!require("gganimate", quietly = TRUE)){ install.packages("gganimate");require("gganimate") } ###データ例の作成##### n <- 150 TestData <- data.frame("SubGroup" = sample(c("KA", "RA", "DA"), n, replace = TRUE), "ID" = sample(letters[1:24], n, replace = TRUE), "Area" = 1:n, "Point" = 0.1:(0.1*n), "Facet" = sample(letters[1:2], n, replace = TRUE), "No" = sample(1:10, n, replace = TRUE)) ######## #gganimateパッケージのtransition_timeコマンドを使う AnimePlot <- ggplot(TestData, aes(area = Area, fill = Point, label = ID)) + geom_treemap() + geom_treemap_text(fontface = "bold", colour = "yellow", place = "centre", grow = TRUE) + scale_fill_gradient2() + transition_time(No) + labs(title = "No: {frame_time}") #作業フォルダに保存 anim_save("KARADA_treemap.gif", AnimePlot, nframes = 130)
出力例
・geom_treemapコマンド
・geom_treemap_textコマンド
・geom_treemap_subgroup_XXXコマンド
・ggplot2::facet_wrapコマンドを適応
・参考:「gganimateパッケージ」を利用したgifアニメーション
少しでも、あなたの解析が楽になりますように!!