将点添加到GGPLOT2直方图

时间:2013-06-04 14:13:59

标签: r ggplot2

我正在尝试生成一个直方图,用于说明所有观测值直方图上的观测点(一个子集)。为了使它有意义,我需要以不同的方式为每个点着色并在图上放置一个图例。我的问题是,我似乎无法得到一个规模来显示在情节上。以下是我尝试过的一个例子。

subset <-1:8
results = data.frame(x_data = rnorm(5000),TestID=1:5000)
m <- ggplot(results,aes(x=x_data))
m+stat_bin(aes(y=..density..))+
stat_density(colour="blue", fill=NA)+
  geom_point(data = results[results$TestID %in% subset,], 
       aes(x = x_data, y = 0),  
       colour = as.factor(results$TestID[results$TestID %in% subset]),
       size = 5)+
scale_colour_brewer(type="seq", palette=3)

理想情况下,我希望这些点位于密度线上(但我真的不确定如何使其工作,所以我会安排将它们定位在y = 0)。我最迫切需要的是一个图例,它表示TestID对应于子集中的每个点。

非常感谢能够提供帮助的任何人。

1 个答案:

答案 0 :(得分:2)

这解决了您的第二点 - 如果您想要一个图例,您需要将该变量包含在美学中并将其映射到变量(在本例中为颜色)。所以你真正需要做的就是将colour = as.factor(results$TestID[results$TestID %in% subset])移动到aes()的调用中,如下所示:

ggplot(results,aes(x=x_data)) + 
  stat_bin(aes(y=..density..))+
  stat_density(colour="blue", fill=NA)+
  geom_point(data = results[results$TestID %in% subset,], 
             aes(x = x_data, 
                 y = 0, 
                 colour = as.factor(results$TestID[results$TestID %in% subset])
                 ),
             size = 5) +
  scale_colour_brewer("Fancy title", type="seq", palette=3)