ggplot2- Как наложить средние значения группы на графики траекторий людей, разделенных группой, с помощью Facet_wrap?

Извините, если заголовок вопроса сформулирован неправильно. Объясните здесь понятнее

Как показано на графиках, у меня есть данные от участников исследования, в котором

  1. каждый субъект оценивался в начале и в конце обучения (2 точки данных на субъект)
  2. Субъекты относились к 1 из 4 возможных групп.

Я смог построить траектории для субъектов во всех 4 группах отдельно, получив данные в длинном формате с помощью расплава (см. скриншот текущего фрейма данных), а затем используя facet_wrap.

Теперь я хотел бы показать это, но со средними линиями для каждой из 4 групп, наложенными друг на друга и четко отделенными от отдельных субъектов.

Я могу рассчитать среднее значение (начальное/конечное значение) для всех 4 групп, используя функцию агрегата (df, group_column_name, mean). Но у меня полное замешательство в том, как включить их в эти графики, разделенные facet_wrap, и при этом выделить их, чтобы они явно отличались от точек данных отдельных субъектов. Любые предложения будут высоко оценены

текущий сюжет используется кадр данных


person stats_nerd    schedule 12.12.2020    source источник


Ответы (1)


Если в каждой строке есть точка данных во всех занятых координатах x (0 и 30), вы можете просто взять среднее значение по x-позиции и построить его. Вы можете выделить строку сводки, установив строку, не являющуюся сводкой, с альфа-каналом или увеличив размер строки сводки.

library(ggplot2)

# Dummy data
set.seed(0)
df <- data.frame(
  name = rep(1:16, each = 2),
  days = rep(c(0, 30), 16),
  group = rep(LETTERS[c(1,1,2,2,3,3,4,4)], each = 2),
  value = rnorm(32)
)

ggplot(df, aes(days, value)) +
  geom_line(aes(colour = as.factor(name), 
                group = name),
            alpha = 0.3, show.legend = FALSE) +
  stat_summary(geom = "line", fun = mean) +
  facet_wrap(~ group)

Создано 12 декабря 2020 г. с помощью пакета reprex (v0.3.0)

person teunbrand    schedule 12.12.2020