データの特徴をHeatMap?で表現するパッケージの紹介です。体裁データを用意することで、複数のカラーパレットやデータ表現だけでなく、行や列をグループ化するなど細かい調整が可能です。
本パッケージの使用は独特なため慣れるまで時間がかかるかもしれません。しかし、データ表現の強力な武器だと思います。参考までに本パッケージの表現が利用されている原著論文を紹介します。
A comparison of single-cell trajectory inference methods
https://www.nature.com/articles/s41587-019-0071-9
なお、従来のHeatMapが作成した場合は「ComplexHeatmap」パッケージがお勧めです。
パッケージバージョンは0.2.0。R version 4.2.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("funkyheatmap")
実行コマンド
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み library("funkyheatmap") ###データ例の作成##### #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 10 #データの行名を「id」にするのがポイントです TestData <- as_tibble(matrix(sample(0:30, 10*n, replace = TRUE), ncol = n, dimnames = list(paste0("Group_", 1:10), LETTERS[1:n])), rownames = "id") ######## ###funky_heatmap用のデータの作成例##### #ColumnInfo:列体裁設定 #PaletteInfo:カラーパレット設定 #ColGroupInfo:列グループ設定 #RowInfo:行情報設定 #RowGroupsInfo:行グループ設定 ##ColumnInfo:列体裁設定のデータ作成 ColumnInfo <- tibble( #内容を設定 id = colnames(TestData), #データ表現:"bar","funkyrect","circle","pie","text"が指定可能 geom = c("text", rep(c("bar","funkyrect","circle","pie"), each = 3, length = length(colnames(TestData))-1)), #グルーピングを設定 #geom="text"はNAを設定する group = c(NA, sort(rep(c("Data_1", "Data_2", "Data_3"), each = 3, length = length(colnames(TestData))-1))), #列名を設定:設定がなくともプロット可能 name = c("Group", "からだに", "いいもの", "KARADA", "GOOD", "R解析", "少しでも", "あなたの", "解析が", "楽に", "なりますように"), #カラーパレットを設定 #geom="text"はNAを設定する palette = c(NA, sort(rep(c("Col_1", "Col_2", "Col_3"), each = 3, length = length(colnames(TestData))-1))), #凡例表示を設定:TRUE/FALSE #次期バージョンで再確認 legend = rep(TRUE, length = 11), #各列幅の設定 width = c(5, rep(4, 4), rep(NA, 6)) ) ## ##PaletteInfo:カラーパレット設定のデータ作成 #list形式で指定します #colorRamp2パッケージがなければインストール #参考:https://www.karada-good.net/analyticsr/r-756-2/ if(!require("colorRamp2", quietly = TRUE)){ install.packages("colorRamp2");require("colorRamp2") } Col_1 <- colorRamp2(breaks = c(0, 0.5, 1), colors = c("#4b61ba", "#756c6d", "#ad8a80")) Col_2 <- colorRamp2(breaks = c(0, 0.5, 1), colors = c("yellow", "#F2E96B", "#CCDE8F")) Col_3 <- colorRamp2(breaks = c(0, 0.5, 1), colors = c("green", "#bfe8d5", "#dfcdd1")) #作成 PaletteInfo <- list( Col_1 = Col_1(seq(0, 1, length = 15)), Col_2 = Col_2(seq(0, 1, length = 15)), Col_3 = Col_3(seq(0, 1, length = 15)), Red = rep("#ff0000", 4)) ## ##列グループ設定のデータ作成 ColGroupInfo <- tibble( category = c("data_1", "data_2", "data_3"), group = c("Data_1", "Data_2", "Data_3"), palette = c("Col_1", "Red", "Col_3") ) ## ##RowInfo:行情報設定のデータ作成 RowInfo <- TestData %>% transmute(id, group = rep(c("test", "Test"), each = 5)) ## ##RowGroupsInfo:行グループの設定のデータ作成 RowGroupsInfo <- tibble(Group = c("Group名", "グループ名"), group = c("test", "Test")) ## ######## #図のプロット:funky_heatmapコマンド funky_heatmap(TestData, column_info = ColumnInfo, column_groups = ColGroupInfo, palettes = PaletteInfo, row_info = RowInfo, row_groups = RowGroupsInfo, expand = c(xmin = 0, xmax = 3, ymin = 0, ymax = 0))
出力例
少しでも、あなたの解析が楽になりますように!!