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))
我在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))