r语言 - 对热图的单元格进行排序



我创建了以下数据框架:

n <- 100
df <- data.frame(
Q1 = sample(c(0,1), n, rep = TRUE),
Q2 = sample(c(0,1), n, rep = TRUE),
Q3 = sample(c(0,1), n, rep = TRUE),
Q4 = sample(c(0,1), n, rep = TRUE),
Q5 = sample(c(0,1), n, rep = TRUE),
Q6 = sample(c(0,1), n, rep = TRUE),
Q7 = sample(c(0,1), n, rep = TRUE),
Q8 = sample(c(0,1), n, rep = TRUE),
Q9 = sample(c(0,1), n, rep = TRUE),
Q10 = sample(c(0,1), n, rep = TRUE))

结果是:

Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
[1,]  0  0  1  0  0  0  0  0  0   0
[2,]  1  0  0  0  0  0  0  0  0   0
[3,]  0  0  1  0  0  0  0  0  0   0
[4,]  0  0  0  1  0  0  0  0  0   0
[5,]  0  0  0  0  0  0  0  0  0   0
[6,]  0  1  0  0  0  0  0  0  0   0
[7,]  0  0  0  1  0  0  0  0  0   0
[8,]  1  0  0  0  0  0  0  0  0   0
[9,]  0  0  0  0  0  0  0  0  0   0
[10,]  1  0  0  0  0  0  0  0  0   0
[11,]  0  0  0  0  0  0  0  0  0   0
[12,]  0  0  0  0  0  0  0  0  0   0
[13,]  0  0  1  0  0  0  0  0  0   0
[14,]  0  0  0  0  0  0  0  0  0   0
[15,]  0  0  0  0  0  0  0  0  0   0
[16,]  0  0  1  0  0  0  0  0  0   0
[17,]  0  0  0  0  0  0  0  0  0   0
[18,]  0  0  1  0  0  0  0  0  0   0
[19,]  0  0  1  0  0  0  0  0  0   0
[20,]  0  1  0  0  0  0  0  0  0   0
[21,]  0  0  0  1  0  0  0  0  0   0
[22,]  0  0  0  1  0  0  0  0  0   0
[23,]  0  0  0  0  0  0  0  0  0   0
[24,]  1  0  0  0  0  0  0  0  0   0
[25,]  0  1  0  0  0  0  0  0  0   0
[26,]  1  0  0  0  0  0  0  0  0   0
[27,]  0  0  0  0  0  0  0  0  0   0
[28,]  0  0  1  0  0  0  0  0  0   0
[29,]  0  1  0  0  0  0  0  0  0   0
[30,]  1  0  0  0  0  0  0  0  0   0
[31,]  1  0  0  0  0  0  0  0  0   0
[32,]  0  1  0  0  0  0  0  0  0   0
[33,]  0  0  0  1  0  0  0  0  0   0
[34,]  0  0  0  0  0  0  0  0  0   0
[35,]  0  0  1  0  0  0  0  0  0   0
[36,]  0  0  1  0  0  0  0  0  0   0
[37,]  0  0  0  0  0  0  0  0  0   0
[38,]  0  1  0  0  0  0  0  0  0   0
[39,]  0  0  0  1  0  0  0  0  0   0
[40,]  0  1  0  0  0  0  0  0  0   0
[41,]  0  1  0  0  0  0  0  0  0   0
[42,]  0  0  0  0  0  0  0  0  0   0
[43,]  1  0  0  0  0  0  0  0  0   0
[44,]  0  0  0  1  0  0  0  0  0   0
[45,]  0  0  0  0  0  0  0  0  0   0
[46,]  0  0  1  0  0  0  0  0  0   0
[47,]  1  0  0  0  0  0  0  0  0   0
[48,]  0  0  0  1  0  0  0  0  0   0
[49,]  1  0  0  0  0  0  0  0  0   0
[50,]  0  0  1  0  0  0  0  0  0   0
[51,]  0  1  0  0  0  0  0  0  0   0
[52,]  0  1  0  0  0  0  0  0  0   0
[53,]  0  0  0  0  0  0  0  0  0   0
[54,]  0  0  1  0  0  0  0  0  0   0
[55,]  0  0  1  0  0  0  0  0  0   0
[56,]  0  0  1  0  0  0  0  0  0   0
[57,]  0  0  0  1  0  0  0  0  0   0
[58,]  0  0  0  0  0  0  0  0  0   0
[59,]  0  0  0  0  0  0  0  0  0   0
[60,]  0  0  0  1  0  0  0  0  0   0
[61,]  0  0  0  0  0  0  0  0  0   0
[62,]  0  1  0  0  0  0  0  0  0   0
[63,]  0  0  0  0  0  0  0  0  0   0
[64,]  1  0  0  0  0  0  0  0  0   0
[65,]  0  0  0  0  0  0  0  0  0   0
[66,]  0  1  0  0  0  0  0  0  0   0
[67,]  0  1  0  0  0  0  0  0  0   0
[68,]  1  0  0  0  0  0  0  0  0   0
[69,]  0  1  0  0  0  0  0  0  0   0
[70,]  0  0  0  0  0  0  0  0  0   0
[71,]  0  1  0  0  0  0  0  0  0   0
[72,]  1  0  0  0  0  0  0  0  0   0
[73,]  0  1  0  0  0  0  0  0  0   0
[74,]  0  0  0  0  0  0  0  0  0   0
[75,]  0  1  0  0  0  0  0  0  0   0
[76,]  0  0  0  0  0  0  0  0  0   0
[77,]  0  0  0  0  0  0  0  0  0   0
[78,]  0  0  0  0  0  0  0  0  0   0
[79,]  0  0  0  0  0  0  0  0  0   0
[80,]  0  0  0  0  0  0  0  0  0   0
[81,]  0  0  0  1  0  0  0  0  0   0
[82,]  1  0  0  0  0  0  0  0  0   0
[83,]  0  0  0  0  0  0  0  0  0   0
[84,]  0  0  0  1  0  0  0  0  0   0
[85,]  0  0  1  0  0  0  0  0  0   0
[86,]  0  0  1  0  0  0  0  0  0   0
[87,]  0  0  0  1  0  0  0  0  0   0
[88,]  0  0  0  0  0  0  0  0  0   0
[89,]  0  1  0  0  0  0  0  0  0   0
[90,]  0  0  1  0  0  0  0  0  0   0
[91,]  0  0  0  0  0  0  0  0  0   0
[92,]  0  1  0  0  0  0  0  0  0   0
[93,]  0  0  0  0  0  0  0  0  0   0
[94,]  0  1  0  0  0  0  0  0  0   0
[95,]  0  1  0  0  0  0  0  0  0   0
[96,]  0  0  0  0  0  0  0  0  0   0
[97,]  1  0  0  0  0  0  0  0  0   0
[98,]  0  0  0  0  0  0  0  0  0   0
[99,]  0  0  1  0  0  0  0  0  0   0
[100,]  0  1  0  0  0  0  0  0  0   0

我想创建一个热图,其中15是阴影(下面的代码)。我想添加一个功能,允许我在地图上为整行上色。例如,我希望第1-50行为蓝色,第50-100行为红色。是否有办法将其合并到代码中?

heatmap(df, Colv = NA, Rowv = NA, scale="column")

提前感谢!!

您可以使用ggplot吗?

library(tidyverse)
library(reshape)
rows_1 <- 1:50
rows_2 <- 51:100
dat1 <- reshape::melt(df) %>%
mutate(y = rep(1:100, 10)) %>%
`colnames<-`(c("x", "value", "y")) %>%
mutate(value = as.factor(value),
fill2 = ifelse(y %in% rows_1, "red",
ifelse(y %in% rows_2, "blue", NA)))
cols <- c("1" = "black", "0" = "white", "red" = "red", "blue" = "blue")
ggplot(dat1, aes(x, y)) +
geom_tile(aes(fill = value)) +
geom_tile(aes(fill = fill2), alpha = 0.3) +
scale_fill_manual(values = cols)

相关内容

  • 没有找到相关文章

最新更新