Заполните область между двумя точечными линиями R

У меня есть tibble, подобные следующему:

 Offensive <- tibble(OffenseFormation = c("A","B","C"),
                     yardas_mean = c(3,4,5),
                     yardas_min  = c(1,4,1),
                     yardas_max  = c(5,4,6))

Я рисую линии с помощью следующего кода (как вы можете видеть на картинке ниже):

 Offensive %>%
   pivot_longer(starts_with("yardas_"),names_to = "yardas") %>% 
   ggplot(aes(x = OffenseFormation, y = value, group = yardas)) +
   geom_line(aes(colour = yardas)) + 
   geom_point(aes(colour = yardas)) 

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

Я хочу заполнить область между yardas_min и yardas_max линиями.

Я уже использовал следующие заказы ggplot:

  • geom_area(alpha=0.1)

  • geom_polygon( aes(y = value, group = yardas), alpha = 0.1)

а также прочитайте некоторые предыдущие посты, подобные этим:

Но безуспешно, какая-нибудь помощь?

Спасибо,

Альберто


person Alberto Torrejon Valenzuela    schedule 31.03.2020    source источник
comment
Когда вы говорите, что не добились успеха в существующих решениях, что именно это означает? Что именно вы пробовали? Что было не так с выводом или какие сообщения об ошибках вы получали?   -  person MrFlick    schedule 31.03.2020
comment
Нет сообщений об ошибках вывода, я просто не вижу область между красной и синей линиями, я получаю другие вещи. Моя цель - заполнить пространство только между этими двумя строками.   -  person Alberto Torrejon Valenzuela    schedule 31.03.2020


Ответы (1)


Проблема в том, что у вас есть дискретные значения в качестве оси x. Вы можете сделать ленту, добавив непрерывные значения в geom_ribbon:

Offensive %>%
  pivot_longer(starts_with("yardas_"),names_to = "yardas") %>% 
  ggplot(aes(x = OffenseFormation, y = value, group = yardas)) +
  geom_line(aes(colour = yardas))+
  geom_ribbon(data = Offensive, 
               inherit.aes = FALSE, 
               aes(x = 1:3, ymin = yardas_min, ymax = yardas_max), 
              fill = "grey70")+
  geom_line(aes(colour = yardas))+
  geom_point(aes(colour = yardas))

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

person dc37    schedule 31.03.2020
comment
Большое спасибо. Это то, что я пытался. Но все же одна проблема, я теряю зеленую линию. В любом случае, либо вывести его на передний план, либо сделать затемненную область прозрачной? - person Alberto Torrejon Valenzuela; 31.03.2020
comment
Используя alpha=0.1 вместо fill=gray, я понял. Спасибо за решение. - person Alberto Torrejon Valenzuela; 31.03.2020
comment
Пожалуйста ;). Чтобы вернуть зеленую линию и точки, вы можете вызвать их после geom_ribbon - person dc37; 31.03.2020