在以下示例中,包含3列和5行的矩阵。当我创建一个热图时,任何具有相似数字的行(如下面的示例(0.3,0.3,0.3))都会在热图中显示白色。我的目的是将其改为任何理想的颜色。 示例:这是一个示例:
A = matrix(c(0.0183207, 0.0000000, 0.1468750, 0.03, 0.03, 0.03,0.4544720,0.0000000,0.1395850,0.002,0,0,1.1,1,1),nrow=5,ncol=3,byrow = TRUE)
dimnames(A) = list(c("row1", "row2","row3","row4","row5"),c("col1", "col2", "col3"))
heatmap.2( A,col =redgreen, scale = "row", cexRow=0.3, cexCol=0.8, margins=c(6,6), trace="none")
非常感谢您的帮助
答案 0 :(得分:2)
颜色为白色,因为热图命令会在绘制热图之前缩放行。因此,行c(0.3,0.3,0.3)变为一行零,并且在该颜色方案中零用白色表示。
如果您想要这些行的其他颜色方案,您必须考虑是否确实要缩放行或使用breaks
和col
参数来为值0创建单独的颜色。 / p>
答案 1 :(得分:0)
缩放常量向量时会发生什么?你告诉R除以0,得到你NaN
。
scale(c(0.3, 0.3, 0.3))
当您告诉heatmap.2
按行缩放时,会发生这种情况,但其中一行没有变化。由于NaN
不是数字,因此将其绘制为白色。如果你想改为黑色,那么我认为你应该事先手动扩展你的数据,并用{0}替换NaN
。
scaled_A <- t(apply(A, MARGIN=1, FUN=scale))
scaled_A[is.nan(scaled_A)] <- 0
然后你可以进行热图呼叫
heatmap.2( scaled_A,col =redgreen,
scale = "none",
cexRow=0.3, cexCol=0.8,
margins=c(6,6), trace="none",
dendrogram='none')
它是黑色的。它似乎按顺序切换顺序,但你可能想出如何解决这个问题。