R 中矩阵单元格的条件着色

Conditional Colouring of Matrix Cells in R

我在R中有一个矩阵,例如:

mat <- matrix(round(runif(n=30^2, min=0, max=1),2), nrow=30, ncol=30)

我的目标是根据单元格中的值为该矩阵的单元格着色。这些值是数字,而不是因素。例如:我喜欢将 0.4 到 0.6 之间的所有值都涂成红色,如果可能的话,这样这些值仍会显示在单元格中。我喜欢将矩阵保存为图像——目的是一眼就能看出哪些单元格是红色的。这个问题的解决方案不应该只允许一种颜色:稍后说 0 到 0.2 之间的值是绿色,或者另外说 0.8 到 1 之间的值是黑色等可能会有用

我尝试了以下操作:

Conditional coloring of cells in table

-> 给我一个热图,但我喜欢选择哪个值得到哪个颜色

-> 给我一个 HTML table,但不是图像(我无法以可以看到整个 table 的方式保存它)

http://www.phaget4.org/R/image_matrix.html

-> 与第一个问题相同 link

你知道我怎样才能得到吗?

这是一个例子:

library(ggplot2)
library(reshape2)
ggplot(melt(mat), aes(Var1, Var2, fill=cut(value, seq(0, 1, .2)), label=round(value, 1))) + 
  geom_tile() + 
  scale_fill_manual(values=c("green", "white", "red", "white", "black")) + 
  geom_text(color="orange")

这是一个使用 heatmap.2 (gplots) 的例子:

library (gplots)
mat <- matrix(round(runif(n=30^2, min=0, max=1),2), nrow=30, ncol=30)
#Let's use a submatrix to play
minimat <- mat[1:5,1:5]

# Using cut to build a factor with the different groups
# and change it to 1 to 3 scale
groups <- cut(minimat,c(0,0.4,0.6,1))
levels(groups) <- 1:length(levels(groups))
groups<-matrix(as.numeric(groups), nrow=5)

# Build your palette
my_palette <- c("green","red", "blue")

# In heatmap.2 use groups as values to color with your palette 
# and minimat to display values.
heatmap.2(x = groups, Rowv = FALSE, Colv = FALSE, col = my_palette, dendrogram = "none", cellnote = minimat, notecol = "black", notecex = 2, trace = "none", key = FALSE, margins = c(2, 2))