ggplot:基于两个向量的热图

ggplot: heatmap based on two vectors

我正在尝试将数据绘制为 ggplot2 中的热图。我知道您通常必须协调 xyz 以绘制 xy,然后按 [=14= 着色].我发现了很多热图示例,但它们都已经有了 z 向量。

我不明白如何从 data.frame 中的两列生成可用的 z 向量。在我的例子中,每一行代表一个人的数据,每一列都是一个分数(或其他)。示例:

library(ggplot2)
d <- data.frame(x = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE), 
                y = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE))
ggplot(d, aes(x, y)) + geom_tile()

这会生成图块,但我如何获得 d$z 以便我可以设置 geom_tile(aes(fill=z))

我觉得这应该很简单,但我无法理解它。任何指针将不胜感激。

谢谢!

例如,您可以计算每个 x 和 y 组合的观察次数,并将其映射到 fill:

library(ggplot2)
d <- data.frame(x = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE), 
                y = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE))

library(dplyr)
group_by(d,x,y) %>% summarize(n=n()) %>% 
  ggplot(aes(x, y,fill=n)) + geom_tile()