Rで解析:インタラクティブなヒートマップ!D3.jsを利用した「d3heatmap」パッケージの紹介

Rの解析に役に立つ記事

ヒートマップをインタラクティブに操作する「d3heatmap」パッケージがリリースされました。本パッケージのメインコマンド”d3heatmap”はgplotsの「heatmap.2」コマンドと多くが共通しているので、これらパッケージの使用経験があるとすぐに使いこなせると思います。

ためしに本パッケージより「400*50の20,000データ」を出力したところ、多少のモタつきはありますがぐりぐり動きました。サーバー経由でなければ一般的な使用方法には十分かと思います。なお、距離の計算は搭載メモリに依存しますのでデータ数は使用環境により異なります。

また、紹介する出力結果は利便性を考えて「50*10の500データ」としています。最下部に表示しています。ぐりぐり動かしてみてください。

Rを使用し始めたころから考えると、これほど多くのインタラクティブな結果を出力するパッケージがリリースされるとは思っていませんでした。

参考までにインタラクティブに結果を出力する「からだにいいもの」の記事を紹介します。また、RStudioを利用すると結果の出力が非常に楽です。出力方法は「dygraphs」パッケージの紹介記事から確認ください。

・「dygraphs」パッケージの紹介
https://www.karada-good.net/analyticsr/r-113/
・「qrage」パッケージの紹介
https://www.karada-good.net/analyticsr/r-119/
・「metricsgraphics」パッケージの紹介
https://www.karada-good.net/analyticsr/r-112/
・「DTパッケージ」の紹介
https://www.karada-good.net/analyticsr/r-107/
・「exCon」パッケージの紹介
https://www.karada-good.net/analyticsr/r-121/

これだけのパッケージがあれば、実用的な作業が十分にできるのではないでしょうか。

ぜひ、ウェブ関係者に利用いただければと思います。

紹介するパッケージバージョンは0.6.0、windows7 64bitとMac OS 10.10.3、RStudioはVersion 0.99.441、R version 3.2.0で確認しています。


スポンサーリンク
スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("d3heatmap")

実行コマンドの紹介

下記コマンドを実行してください。詳細はコメントまたはパッケージヘルプを確認してください。

#パッケージの読み込み
library("d3heatmap")

#データ例の作成
#50*10のデータ
TestData <- matrix(sample(1:1000, 500, replace = TRUE), 50, 10)
TestData <- data.frame(row.names = paste0("TEST", 1:50), TestData)
colnames(TestData) <- paste0("Data", 1:10)

#プロット
#オプション無しで単純にプロット
d3heatmap(TestData)

#デンドログラムの表示設定:dendrogramオプション;初期値"both"
#"both", "row", "column", "none"の設定が可能
#ラベル表示順にも影響します
d3heatmap(TestData, dendrogram = "none")

#行と列の距離計算を設定:Rowv;初期値TRUE, Colv;初期値"Rowv"オプション
#初期値はdist,hclustコマンドの初期設定となります
#FALSEを指定すると並び替をしませんがColvは初期値が使用されます
d3heatmap(TestData, Rowv = FALSE)

#デンドログラムを指定したグループで色分け:k_row, k_colオプション
#色の指定はcolor_branchesコマンドを使用:最下部で紹介
d3heatmap(TestData, k_row = 5, k_col = 3)

###Rowv, k_row, k_colオプションを適応し出力###
d3heatmap(TestData, Rowv = FALSE, k_row = 5, k_col = 3)
##############################################

#セルの色を指定:colorsオプション;初期値"RdYlBu"
#colorRampPaletteコマンドを利用すると便利です
d3heatmap(TestData, colors = colorRampPalette(c("#d9bb9c", "#4b61ba"))(10))

#セルの枠線を消す:show_gridオプション;初期値TRUE
#FALSEで消えます
d3heatmap(TestData, show_grid = FALSE,
          colors = colorRampPalette(c("#d9bb9c", "#4b61ba"))(10))

###colors, show_gridオプションを適応し出力###
d3heatmap(TestData, show_grid = FALSE,
          colors = colorRampPalette(c("#d9bb9c", "#4b61ba"))(10))
######################################################

##############################################
#参考:距離計算の方法例とcolor_branchesコマンドの使用例
#as.dendrogram, hclust, Distコマンドを利用
#距離計算手法が多いamapパッケージのDistコマンドを使用しています
#詳細は各コマンドヘルプをご覧ください

#amapパッケージのインストール
#install.packages("amap")
#amapライブラリの読み込み
library(amap)

#距離計算
RowDist <- as.dendrogram(hclust(Dist(TestData, method = "pearson", nbproc=200),
                                method = "complete"))
ColDist <- as.dendrogram(hclust(Dist(t(TestData), method = "pearson", nbproc=200),
                                method = "complete"))

#デンドログラムの色設定:dendextendパッケージのcolor_branchesコマンドを利用
library("dendextend")
RowDist <- color_branches(RowDist, k = NULL, h = NULL,
                          col = colorRampPalette(c("#4b61ba", "#ffdd99")))
ColDist <- color_branches(ColDist, k = NULL, h = NULL,
                          col = colorRampPalette(c("#deb7a0", "red")))

#k_row, k_colオプションを適用するとデンドログラムの色は反映されません
d3heatmap(TestData, Rowv = RowDist, Colv = ColDist, show_grid = FALSE,
          colors = colorRampPalette(c("#d9bb9c", "#4b61ba"))(10))

出力例

ドラッグで拡大や行と列ラベルをクリックすることで一括選択ができます。拡大の解除はダブルクリックで可能です。

<オプション無しで単純にプロット>

<Rowv, k_row, k_colオプションを適応し出力>
列のデンドログラムがありません。列の並び順が元データのままです。

<colors, show_gridオプションを適応し出力>
セルの色、枠線なしです。

<参考:距離計算の方法例とcolor_branchesコマンドの使用例>
距離計算をDistコマンド、デンドログラムの色を変更しています。


少しでも、あなたのウェブや実験の解析が楽になりますように!!

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