我已经生成了一个简单的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如何生成这种不同颜色的块?不应该说红色和白色吗?还是黄色和白色?或类似的东西?
我做错了什么?
答案 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
帮助页面
答案 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;