簡體   English   中英

R中的熱圖與圖像功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM