繁体   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