我正在尝试生成一个直方图,用于说明所有观测值直方图上的观测点(一个子集)。为了使它有意义,我需要以不同的方式为每个点着色并在图上放置一个图例。我的问题是,我似乎无法得到一个规模来显示在情节上。以下是我尝试过的一个例子。
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对应于子集中的每个点。
非常感谢能够提供帮助的任何人。
答案 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)