RによるHeatmapグラフの作成

手順

距離関数Dist()で類似度を求め、hclust()でクラスタリングし、heatmap()のColv,Rowvオプションにdendrogram()を指定して出力する。
プログラム例

library(amap)
# Heatmapグラフ作成
#
# ファイルの読み込み
data <- read.table("test.txt", header=TRUE, row.names=1, sep="\t")
#
# PDFに出力する
pdf()
#
# 距離関数で類似度のアルゴリズムとしてCosine係数を使用する
# (method="pearson")は(1 - cosine)と同義である
d1<-Dist(data, method="pearson")
d2<-Dist(t(data), method="pearson")
#
# クラスタリングでAverage Linkageを使用する
c1<-hclust(d1, method="average")
c2<-hclust(d2, method="average")
#
# Heatmap PDFファイルの出力
heatmap(as.matrix(data),
        Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1),
        scale="none", col=cm.colors(256),
        main="Cosine-Average", margin=c(8,10))
#
# デバイスを閉じる
dev.off()



関数の主な仕様

距離関数
距離関数にはamapライブラリのDist()と標準のdist()がある。標準のdist()は類似度を指定するmethodオプションにPearson's相関係数Cosine係数が無いので、Dist()を使用した方がよい。また、dist()は結果の距離行列が千倍程度(?)の値になる。
  • Dist()関数の使用例

  • Dist()は類似度をmethodオプションとして指定できる。

    library(amap)
    Dist(data,method="peason")

  • Dist()関数のmethodオプション文字列


  • methodオプションの名前はまぎらわしいので気をつけること。

    "correlation" : Pearson's相関係数。(1 - peason)の値。
    "pearson"     : Cosine係数。(1 - cosine)の値。
    "euclidean"   : ユークリッド距離
    "maximum"     : 最大距離
    "manhattan"   : マンハッタン(シティーブロック)距離
    "canberra"    : キャンベラ距離
    "binary"      : バイナリー距離

  • R Documentation


クラスタリング関数
  • hclust()関数の使用例

  • hclust()は階層的手法をmethodオプションとして指定できる。

    c1<-hclust(d1, method="average")

  • hclust()関数のmethodオプション文字列
  • "single"      : 単連結法  (Single Linkage)
    "complete"    : 完全連結法(Complete Linkage)
    "average"     : 群平均法  (Average Linkage)
    "ward"        : ウォード法(Ward's Minimum Variance)

  • R Documentation



ヒートマップ関数
  • heatmap()関数の使用例
  • heatmap(as.matrix(data),
            Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1),
            scale="none", col=cm.colors(256),
            main="Cosine-Average", margin=c(8,10))

  • heatmap()関数のColv,Rowvとscaleオプション


  • Colv,Rowvオプションにdendrogram()の返り値を指定する。このオプションの指定が無い場合は、正方行列のデータからしかヒートマップを作成できない。縦、横のサイズが異なるデータにおいては、Colv,Rowvオプションの指定は必須である。
    scaleオプションには"none"を指定すること。
  • R Documentation