R热图功能问题 - 生成错误的配色方案

时间:2014-07-25 17:11:23

标签: r heatmap

我已经生成了一个简单的0和1的测试矩阵(只有3x3矩阵)。我生成的确切矩阵是:

vector <- c(1, 0, 0, 1, 1, 1, 0, 0, 1)
matrix <- matrix(vector, nrow=3, ncol=3)
heatmap(matrix, Rowv=NA, Colv=NA)

然后生成的热图以白色,黄色,橙色和红色块形式出现。只有0和1如何生成这种不同颜色的块?不应该说红色和白色吗?还是黄色和白色?或类似的东西?

我做错了什么?

2 个答案:

答案 0 :(得分:1)

heatmap的默认行为是按行缩放值(将它们居中并除以标准差)。所以你不只是在你的例子中绘制0和1。这是你真正正在策划的内容

m1 <- sweep(matrix, 1, rowMeans(matrix))
msd <- apply(m1, 1, sd)
m2 <- sweep(m1, 1, msd, `/`)
m2[,3:1]

#            [,1]      [,2]       [,3]
# [1,] -1.1547005 0.5773503  0.5773503
# [2,] -0.5773503 1.1547005 -0.5773503
# [3,]  0.5773503 0.5773503 -1.1547005

如果您只想要两种颜色,请设置scale="none"

heatmap(matrix, Rowv=NA, Colv=NA, scale="none")

?heatmap帮助页面

中对此进行了描述

enter image description here

答案 1 :(得分:0)

这不是一个很好的问题。我建议在发布前阅读?热图。您可以在热图功能中轻松指定颜色,如下所示:

vector <- c(1, 0, 0, 1, 1, 1, 0, 0, 1)
matrix <- matrix(vector, nrow=3, ncol=3)
heatmap(matrix, Rowv=NA, Colv=NA,
        col = c('red', 'blue')
        )

如果您想要更多地控制颜色,可以将功能传递给&#39; col&#39;