简体   繁体   中英

Adding points to GGPLOT2 Histogram

I'm trying to produce a histogram that illustrates observed points(a sub-set) on a histogram of all observations. To make it meaningful, I need to color each point differently and place a legend on the plot. My problem is, I can't seem to get a scale to show up on the plot. Below is an example of what I've tried.

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)

Ideally, I'd like the points to be positioned on the density line(but I'm really unsure of how to make that work, so I'll settle to position them at y = 0). What I need most urgently is a legend which indicates the TestID that corresponds to each of the points in subset.

Thanks a lot to anyone who can help.

This addresses your second point - if you want a legend, you need to include that variable as an aesthetic and map it to a variable (colour in this case). So all you really need to do is move colour = as.factor(results$TestID[results$TestID %in% subset]) inside the call to aes() like so:

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM