我看到过在各种R图形系统中生成的热图,包括lattice和base,如下所示:
我倾向于使用一些ggplot2
,并且希望能够绘制一个带有相应单元格值的热图。下面是热图和使用geom_text
的尝试:
library(reshape2, ggplot2)
dat <- matrix(rnorm(100, 3, 1), ncol=10)
names(dat) <- paste("X", 1:10)
dat2 <- melt(dat, id.var = "X1")
p1 <- ggplot(dat2, aes(as.factor(Var1), Var2, group=Var2)) +
geom_tile(aes(fill = value)) +
scale_fill_gradient(low = "white", high = "red")
p1
#attempt
labs <- c(apply(round(dat[, -2], 1), 2, as.character))
p1 + geom_text(aes(label=labs), size=1)
通常我可以计算出要传递的x和y值,但在这种情况下我不知道,因为这些信息没有存储在数据集中。我如何将文本放置在热图上?
2条答案
按热度按时间bxjv4tth1#
关键是给数据添加一个行标识符,并使其“更长”。
2022年12月编辑,使代码可在R 4.2.2 /ggplot 2 3.4.0中重现,并反映tidyverse语义的变化
创建于2022年12月31日,使用reprex v2.0.2
bvpmtnay2#
还有另一种更简单的方法来制作有值的热图,你可以使用pheatmap来完成。
这会给予你一个像这样的情节
如果要移除聚类并使用您的配色方案,可以执行以下操作
您还可以更改显示的数字的字体大小、格式和颜色。