Как заполнить часть кривой плотности в гриджах вместе с фасетками

Я хотел бы раскрасить определенную область, где col_bol = 1 на графике ggridges кривой плотности. Я знаю, что это можно сделать, используя stat_density_ridges() квантили. Если у меня нет квантилей, я вычисляю процент. Это работает, если это только один сюжет без граней.

Как я мог этого добиться, используя данные ниже?

library(tidyverse)
library(ggridges)

plot_data <- iris %>% gather(key = 'key', value = 'value', -Species) %>% mutate(col_bol =  case_when(
  Species == 'setosa' & (value < 1.5 | value > 6) ~ 1,
  Species != 'setosa' & (value < 1.3 | value > 6.2) ~ 1,
  TRUE ~ 0))


ggplot(data = plot_data, mapping = aes(y = key, x = value)) +
  geom_density_ridges() +
  facet_wrap(~Species, scales = 'free_x') + 
  theme_ridges()

person MLEN    schedule 18.05.2020    source источник


Ответы (1)


Я не встречу особых трудностей, чтобы нанести на него грань.

Если я возьму ваши примеры с использованием квантилей:

ggplot(data = plot_data,
       mapping = aes(y = key, x = value, fill = factor(stat(quantile)))) +
  stat_density_ridges(
    geom = "density_ridges_gradient",
    calc_ecdf = TRUE, 
    quantiles = c(0.025, 0.975)) +
  facet_wrap(.~Species, scales = 'free_x') +
  theme_ridges()

он возвращает графики фасетов с желаемыми столбцами.

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

person Jrm_FRL    schedule 18.05.2020
comment
Да с квантилями проблем нет. Но как бы вы раскрасили по столбцу col_bol? - person MLEN; 18.05.2020
comment
Или во сколько окрасить грани по разным квантилям? - person MLEN; 19.05.2020