Создание сгруппированного барплота в ggplot2, показывающего средние значения (которые я не хочу вводить вручную)
Я пытаюсь создать сгруппированную гистограмму, показывающую средние значения для вводимых данных, и в то же время я хочу сделать ее легко воспроизводимой, чтобы можно было менять другие наборы данных, которые расположены аналогично. Я не хочу вычислять среднее значение вручную и вводить его во фрейм данных - есть ли способ сделать это?
Мои данные состоят из числовых значений от 100 до 2000, сгруппированных в 3 различные группы лечения наркоманией, которые затем подразделяются на 3 группы (в зависимости от их анатомического расположения в организме, которые называются "Внутренний", "Средний", "Внешний"). Окончательный график должен состоять из 3 групп по 3 столбца (каждая из которых представляет средние значения выживаемости клеток в каждой из 3 локаций). До сих пор мне удавалось делать отдельные барплоты, но я хочу их объединить.
Вот некоторый код, который у меня есть, а ниже - небольшая выдержка из набора данных:
ggplot(Survival, aes(Treatment, Inner)) +
stat_summary(fun.y = mean,
geom = "bar",
position = "dodge")
Treatment Inner Middle Outer
RAD 317 373 354
RAD 323 217 174
RAD 236 255 261
HUTS 1411 1844 1978
HUTS 1922 1756 1856
HUTS 1478 1711 1433
RGD 1433 1489 1633
RGD 1400 1500 1544
RGD 1222 1333 1444
1 ответ
Вот два варианта: один использует group_by
а также summarise
от dplyr
рассчитать средства, затем трубы в ggplot
чтобы сделать уклонение баров. Второй использует stat_summary
как ваш пример кода. Оба требуют gather
ваши данные в длинном формате.
library(tidyverse)
df %>%
gather(key = group, value = value, -Treatment) %>%
group_by(Treatment, group) %>%
summarise(mean_val = mean(value, na.rm = T)) %>%
ggplot(aes(x = Treatment, y = mean_val, fill = group)) +
geom_col(position = position_dodge())
df %>%
gather(key = group, value = value, -Treatment) %>%
ggplot(aes(x = Treatment, y = value, fill = group)) +
stat_summary(fun.y = mean, geom = "col", position = position_dodge())