データの特徴を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))
出力例

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