Вот простой обходной путь.Идея состоит в том, чтобы вызвать ggplot_build
, позволить ggplot
выполнить расчеты за вас, а затем извлечь необходимую y
эстетику из результирующего объекта, который в вашем случае равен density
.
library(ggplot2)
library(ggpmisc)
p <- ggplot(iris, aes(x = Petal.Length)) +
geom_density()
pb <- ggplot_build(p)
p + stat_peaks(
data = pb[['data']][[1]], # take a look at this object
aes(x = x, y = density),
colour = "red",
size = 3
)
Я уверен, что этот подход может быть улучшен одним из мастеров ggplot2, который может объяснить, почему это не работает ...
ggplot(iris, aes(x = Petal.Length, y = stat(density))) +
geom_density() +
stat_peaks()
ошибка: stat_peaks требует следующую отсутствующую эстетику: y
... что было моим первым предположением.