Rで解析:これはHeatMap?「funkyheatmap」パッケージ

Rの解析に役に立つ記事

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

出力例


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

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