Rで解析:Alluvial diagramsをプロットしませんか「ggalluvial」パッケージ

Rの解析に役に立つ記事

データの流れを指標や時間軸で表現するのに便利な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()

出力例


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

タイトルとURLをコピーしました