[英]Heatmap vs image function in R
我剛剛注意到,即使我使用的是相同的數據矩陣,使用heatmap()
函數和image()
函數的圖看起來也不同。 我有以下代碼:
set.seed(12345)
dataMatrix <- matrix(rnorm(400), nrow =40)
set.seed(678910)
for(i in 1:40) {
# flip a coin
coinFlip <- rbinom(1, size =1, prob =0.5)
# if coin is heads add a common pattern to that row
if(coinFlip) {
dataMatrix[i, ] <- dataMatrix[i, ] + rep(c(0,3), each =5)
}}
hh <- hclust(dist(dataMatrix))
dataMatrixOrdered <- dataMatrix[hh$order, ]
image(t(dataMatrixOrdered)[, nrow(dataMatrixOrdered):1])
heatmap(t(dataMatrixOrdered)[, nrow(dataMatrixOrdered):1])
據我了解,這兩個函數之間的唯一區別是, heatmap()
函數進行聚類分析以生成行和列的樹狀圖。 因此,這些圖應該看起來相同。 有人可以告訴我為什么我會看到這種差異嗎? 我附上了這兩個函數的圖。
實際上,這兩個函數會產生始終如一的不同模式。 我不知道這是怎么發生的,但是無論您是否重新排序數據都會發生這種情況。
只是為了便於可視化差異,我將 dataMatrix 變成了距離矩陣。 顯示此距離矩陣的熱圖應該是完全對稱的。 圖像確實給出了對稱的熱圖,熱圖沒有。
set.seed(12345)
dataMatrix <- matrix(rnorm(400), nrow =40)
set.seed(678910)
for(i in 1:40) {
# flip a coin
coinFlip <- rbinom(1, size =1, prob =0.5)
# if coin is heads add a common pattern to that row
if(coinFlip) {
dataMatrix[i, ] <- dataMatrix[i, ] + rep(c(0,3), each =5)
}}
dataMatrix <- as.matrix(dist(dataMatrix))
image(dataMatrix)
heatmap(dataMatrix, Rowv = NA, Colv = NA)
發生的情況是熱圖在進行着色之前縮放行。 如果避免這種縮放,這兩個函數會給出相同的熱圖。
heatmap(dataMatrix, Rowv = NA, Colv = NA, scale = "none")
您可以在此處閱讀有關此內容的更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.