Heatmap の書き方
ヒートマップでは、縦横両方向に対してクラスターの表示が同時にでき、各要素の高低を色で示すことができます。
データ形式は、例えば、テストの成績などでも可能です。
name | Japanese | English | Science | Mathematics | SocialStudies |
Taro | 55 | 70 | 30 | 90 | 63 |
Jiro | 20 | 33 | 55 | 99 | 88 |
Saburo | 68 | 83 | 59 | 68 | 75 |
みたいなデータです。仮に、"data_file.csv" というファイルに納め、保存してあるとします。
library(amap) と library(gplots) を必要としますので、事前にインストールして下さい。
**************************************
# データの読み込み
datafile<-read.csv("data_file.csv",header=T, row.names="id")
# 標準化; 各変量を平均が 0 ,分散が 1 になるように変換
ndata <- scale(datafile)
library(amap)
# 距離関数で類似度のアルゴリズムとしてCosine係数を使用する
# (method="pearson")は(1 - cosine)と同義である
d1<-Dist(ndata, method="pearson")
d2<-Dist(t(ndata), method="pearson")
# クラスタリングでAverage Linkageを使用する
c1<-hclust(d1, method="average")
c2<-hclust(d2, method="average")
# 赤と緑の Heatmap の出力
library(gplots)
heatmap.2(as.matrix(ndata),
Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1),
scale="none", col=redgreen(75),
main="Heatmap", margin=c(8,10))
# 順番を入れ替えたくないとき (樹形図なし)
heatmap.2(as.matrix(ndata),
dendrogram = "none",
Colv=F,
Rowv=FALSE,
scale="none",
key = F,
density.info="none",
col=bluered(256),
main="Heatmap #2", margin=c(8,10),
trace = "none"
)
# 横に樹形図を表示したい時。 dendrogram = "row" と Rowv=as.dendrogram(c1) の指定が必要です。
library(gplots)**************************************
Colour <- colorRampPalette( c("blue","white","red") )
heatmap.2(as.matrix(データノナマエ),
dendrogram = "row",
Colv=F,
Rowv=as.dendrogram(c1),
scale="none",
key = F,
density.info="none",
col=Colour,
main="Heatmap #3", margin=c(8,10),
trace = "none"
)
データの読み込み時に、行にも列にも「名前」が付いているファイルに対応しています。
行と列の大きさが異なる時には、Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1) の指定が必要らしいです。
R で、好みの色のグラデーションでヒートマップが描きたい。に色について書きました。
よかったらご欄下さい。
Rで、サンプルデータ作製からヒートマップ表示とクラスタリング表示 (Afiinity propagation含む) まで で、乱数によるサンプルデータを作って、並べ換えなしでヒートマップを書くところから、クラスタリングを行ってヒートマップを書くところまで記載しました。
参考にしたサイト
http://d.hatena.ne.jp/kirifue/20090617/1245288104
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/59.html