データの流れを指標や時間軸で表現するのに便利なAlluvial diagrams(沖積図)です。「ggplot2」パッケージを使用したパッケージですので、「ggplot2」パッケージのコマンドが利用可能です。「ggplot2」パッケージ のコマンドと合わせて利用するパッケージです。実際の作業に合わせて実行コマンドを紹介します。
パッケージバージョンは0.12.3。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("ggalluvial")
実行コマンド
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("ggalluvial")
###データ例の作成#####
#tidyverseパッケージを読み込み
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
#作成
n <- 30
set.seed(1234)
TestData <- tibble(Group = factor(sample(paste0("Group", 1:3),
n, replace = TRUE)),
Judge = factor(sample(c("Yes", "No"),
n, replace = TRUE)),
Device = factor(sample(c("Pc", "Mobile", "Tablet"),
n, replace = TRUE)),
Freq = sample(0:50, n, replace = TRUE))
#確認
TestData
# A tibble: 30 x 4
Group Judge Device Freq
<fct> <fct> <fct> <int>
1 Group2 No Pc 32
2 Group1 Yes Pc 7
3 Group1 Yes Pc 7
4 Group1 Yes Pc 21
5 Group1 No Tablet 41
6 Group2 Yes Tablet 36
7 Group2 No Mobile 11
8 Group2 Yes Pc 41
9 Group3 Yes Mobile 19
10 Group2 Yes Mobile 32
# ... with 20 more rows
#単色カラーパレット作成で「monochromeR」パッケージを使用
#記事:https://www.karada-good.net/analyticsr/r-647/
#monochromeRパッケージを読み込み
#monochromeRパッケージがなければインストール
if(!require("monochromeR", quietly = TRUE)){
install.packages("monochromeR");require("monochromeR")
}
#作成
ColPal <- generate_palette(colour = "#4b61ba", blend_colour = "red",
n_colours = 10, view_palette = FALSE,
view_labels = FALSE)
########
###沖積図をプロット例#####
##ggplot2::ggplotコマンド##
#aes内に沖積図の分岐点,y軸の設定を記述します
#分岐点:axisXX;設定する分岐点を記述します
ggplot(TestData, aes(axis1 = Group,
axis2 = Judge,
axis3 = Device,
y = Freq)) +
##ggalluvial::geom_alluviumコマンド;沖積図を描写
#aes内に装飾の設定を記述します;ggplot2と同じ設定が使用できます
#分岐での塗条件は例のように複数設定できます
geom_alluvium(aes(fill = Group:Judge), alpha = 1) +
##ggalluvial::geom_flowコマンド;分岐周辺以外をマスキング
#マスキング領域の設定:widthオプション
geom_flow(stat = "alluvium", lode.guidance = "frontback",
color = "darkgray", width = .5, curve_type = "quintic") +
##ggplot2::scale_fill_manualコマンド;カラーパレットを指定
scale_fill_manual(values = ColPal) +
##ggalluvial::geom_stratumコマンド;分岐点に垂直に棒グラフを描写
#widthを1にするとモザイクプロット風になります
geom_stratum(width = 1/13, fill = "#a87963", color = "grey") +
##ggplot2::geom_labelコマンド;"stratum"を設定することがポイントです
geom_label(stat = "stratum", aes(label = after_stat(stratum),
col = "red"),
size = 3, show.legend = FALSE) +
##ggplot2::scale_x_discreteコマンド;x軸のラベル設定
scale_x_discrete(limits = c("Group", "Judge", "Device"),
expand = c(.1, .1)) +
##ggplot2::facet_wrapコマンド;プロット分割
facet_wrap(~ Judge) +
##ggplot2::coord_flipコマンド;x,y軸の入れ替え
coord_flip() +
##ggplot2::theme_darkコマンド;テーマの適応
theme_dark()
出力例

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