2015-12-02 93 views
0

我想绘制数据作为热图在ggplot2。我知道你通常必须有x,yz协调绘制xy,然后颜色z。我发现了很多热图的例子,但它们都已经有了z载体。ggplot:基于两个矢量的热图

我不明白我是如何从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))

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

谢谢!

+0

这听起来是你想要的东西比其他热图。 z轴确定您的瓷砖的颜色。所以在你的例子中,你想要确定瓷砖的颜色? – nist

+0

例如[3,7]的瓦片应根据值3和7共同出现的频率进行着色。那有意义吗? – Florian

回答

3

你可以例如计算观测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() 

enter image description here

+0

谢谢!这正是我所需要的。不过,我很难分析'dplyr'的语法。 – Florian