Heatmap.2(以下のコード)を使用して、対数変換された倍数変化データのプロットを生成しようとしています。
ヒートマップの行を最後の列の値(最大から最小)で並べ替えたいと思います。行は自動的に順序付けられ(「内部」で使用される正確な計算はわかりません)、画像に示されているように、いくつかのクラスタリングが実行されています。
sample_data
gid 2hrs 4hrs 6hrs 8hrs
1234 0.5 0.75 0.9 2
2234 0 0 1.5 2
3234 -0.5 0.1 1 3
4234 -0.2 -0.2 0.4 2
5234 -0.5 1.2 1 -0.5
6234 -0.5 1.3 2 -0.3
7234 1 1.2 0.5 2
8234 -1.3 -0.2 2 1.2
9234 0.2 0.2 0.2 1
0123 0.2 0.2 3 0.5
コード
data <- read.csv(infile, sep='\t',comment.char="#")
rnames <- data[,1] # assign labels in column 1 to "rnames"
mat_data <- data.matrix(data[,2:ncol(data)]) # transform columns into a matrix
rownames(mat_data) <- rnames # assign row names
# custom palette
my_palette <- colorRampPalette(c("turquoise", "yellow", "red"))(n = 299)
# (optional) defines the color breaks manually for a "skewed" color transition
col_breaks = c(seq(-4,-1,length=100), # for red
seq(-1,1,length=100), # for yellow
seq(1,4,length=100)) # for green
# plot data
heatmap.2(mat_data,
density.info="none", # turns off density plot inside color legend
trace="none", # turns off trace lines inside the heat map
margins =c(12,9), # widens margins around plot
col=my_palette, # use on color palette defined earlier
breaks=col_breaks, # enable color transition at specified limits
dendrogram='none', # only draw a row dendrogram
Colv=FALSE) # turn off column clustering
プロット
行列を最後の列で並べ替えてこの順序を強制的に使用できるように並べ替えをオフにする方法、またはheatmap.2関数をハックしてこれを行う方法を誰かが提案できるかどうか疑問に思っています。
Rowv=FALSE
を指定しておらず、デフォルトで行が並べ替えられます(heatmap.2
ヘルプ、パラメーターRowv
の場合:
行樹状図を並べ替える必要があるかどうか、およびその方法を決定します。デフォルトではTRUEです。これは、樹状図が行の平均に基づいて計算され、並べ替えられることを意味します。 NULLまたはFALSEの場合、樹状図は計算されず、並べ替えも行われません。
したがって、最後の列に従って行を並べ替える場合は、次のようにすることができます。
mat_data<-mat_data[order(mat_data[,ncol(mat_data)],decreasing=T),]
その後
heatmap.2(mat_data,
density.info="none",
trace="none",
margins =c(12,9),
col=my_palette,
breaks=col_breaks,
dendrogram='none',
Rowv=FALSE,
Colv=FALSE)
次の画像が表示されます。