Добавление geom_point в ggridges

Если я хочу добавить точечную оценку к ggridge объект, но я продолжаю получать ошибку:

library(ggplot2)
library(ggridges)

iris_med <- iris %>% group_by(Species) %>% summarise(Sepal.Length = median(Sepal.Length))

ggplot(iris, aes(x = Sepal.Length, y = Species, fill = 0.5 - abs(0.5-..ecdf..))) +
  stat_density_ridges(geom = "density_ridges_gradient", calc_ecdf = TRUE) +
  geom_point(aes(x = Sepal.Length, y = Species, color = "red"), data = iris_med)

Picking joint bandwidth of 0.181
Error in eval(expr, envir, enclos) : object 'ecdf' not found

Вывод я надеюсь добиться: введите описание изображения здесь

1 ответ

Решение

Проблема может быть решена путем указания inherit.aes = F в geom_point вызов:

ggplot(iris, aes(x = Sepal.Length, y = Species, fill = 0.5 - abs(0.5-..ecdf..))) +
  stat_density_ridges(geom = "density_ridges_gradient", calc_ecdf = TRUE) +
  geom_point(aes(x = Sepal.Length, y = Species, color = "red"), data = iris_med, inherit.aes = F)

выдает только он следующее сообщение:

Picking joint bandwidth of 0.181

введите описание изображения здесь

РЕДАКТИРОВАТЬ: Другой подход (благодаря комментарию @Axeman) будет перемещать fill эстетический stat_density_ridges слой.

Другие вопросы по тегам