複数の指標間の関係性を表現するUpSetプロットに情報の追加が簡単なパッケージの紹介です。UpSetプロットの表現を拡張できるのではないでしょうか。「ComplexUpset」パッケージ単独でも利用することができますが、「ggplot2」パッケージを利用して表現力のあるグラフの追加が可能です。
パッケージのバージョンは1.3.3。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("ComplexUpset")
実行コマンド
詳細はコメント、パッケージヘルプを確認してください。
#パッケージの読み込み library("ComplexUpset") ###データ例の作成##### #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 300 TestData <- tibble(Group = sample(paste0("Group", 1:4), n, replace = TRUE), value = sample(c(1:10), n, replace = TRUE), binary_Data_1 = sample(c(0:1), n, replace = TRUE), binary_Data_2 = sample(c(0:1), n, replace = TRUE), binary_Data_3 = sample(c(0:1), n, replace = TRUE), binary_Data_4 = sample(c(0:1), n, replace = TRUE)) #binary_Dataの行名を取得 Binary_Name <- TestData %>% select(contains("binary")) %>% colnames() ######## #upsetのプロット:upsetコマンド #Setsizeと交差行列のプロット横比率:width_ratioオプション #Setsizeと交差行列のプロット縦比率:height_ratioオプション upset(TestData, Binary_Name, name = "Binary_Name", width_ratio = 0.25, height_ratio = 0.3) #表示する最小の交差の総数:min_sizeオプション upset(TestData, Binary_Name, name = "Binary_Name", width_ratio = 0.25, height_ratio = 0.2, min_size = 20, wrap = TRUE, set_sizes = upset_set_size()) #表示する最小からの交差の数:min_degreeオプション/max_degree upset(TestData, Binary_Name, name = "Binary_Name", width_ratio = 0.25, height_ratio = 0.2, min_degree = 3) #表示する交差の数:n_intersectionsオプション upset(TestData, Binary_Name, name = "Binary_Name", n_intersections = 10) #「ggploy2」パッケージと組み合わせた利用例 #upsetの体裁を整える:base_annotationsオプション #upsetへのアノテーションの体裁を整える:annotationsオプション upset(TestData, Binary_Name, name = "Binary_Name", width_ratio = 0.25, height_ratio = 0.3, base_annotations = list( #Intersection sizeの体裁 'Intersection size'= intersection_size( #テキストの色 text_colors = c(on_background = "brown", on_bar = "yellow"), #テキストの位置,回転 text = list(c(vjust = -0.1, hjust = -0.1, ngle = 45)) ) ), annotations = list( #annotationsの体裁,ggplot2のコマンドが利用できます #intersection sizeのプロットに合わせる:intersectionを設定する #上段のannotations "value" = ggplot(mapping = aes(x = intersection, y = value, group = intersection, fill = intersection)) + geom_boxplot() + theme(legend.position = "none"), #下段のannotations "value_2" = ggplot(mapping = aes(fill = Group)) + geom_bar(stat = "count", position = "stack") ) )
出力例
・upsetのプロット:upsetコマンド
・表示する最小の交差の総数:min_sizeオプション
・表示する最小からの交差の数:min_degreeオプション/max_degree
・表示する交差の数:n_intersectionsオプション
・「ggploy2」パッケージと組み合わせた利用例
少しでも、あなたの解析が楽になりますように!!