Try the following:
library(plyr) library(scales) p <- ggplot(mtcars, aes(mpg)) + geom_histogram(aes(y = ..density..)) + facet_wrap(~am) r <- print(p) # in data coordinate (dc <- dlply(r$data[[1]], .(PANEL), function(x) max(x$density))) (mx <- dlply(r$data[[1]], .(PANEL), function(x) x[which.max(x$density), ]$x)) # add annotation (see figure below) p + geom_text(aes(x, y, label = text), data = data.frame(x = unlist(mx), y = unlist(dc), text = LETTERS[1:2], am = 0:1), colour = "red", vjust = 0) # scale range (yr <- llply(r$panel$ranges, "[[", "y.range")) # in relative coordinates (rc <- mapply(function(d, y) rescale(d, from = y), dc, yr))

kohske
source share