我在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
- &GT;给我一个热图,但我喜欢选择哪个值得到哪种颜色
How to color specific cells in a Data Frame / Table in R?
- &GT;给我一个HTML表格,但不是图像(我不能以我能看到整个表格的方式保存它)
http://www.phaget4.org/R/image_matrix.html
- &GT;与第一个链接相同的问题
你知道我怎么做到的吗?
答案 0 :(得分:0)
以下是一个例子:
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")
答案 1 :(得分:0)
以下是使用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))