R ggplot2 столбчатая диаграмма с накоплением, x как.фактор (время), fill = c(среднее значение E, среднее значение T, среднее значение P)

Я пытаюсь создать сложенный барный сюжет, но безуспешно. К сожалению, я не могу понять, как разместить фрейм данных, и я новый пользователь, поэтому не могу публиковать изображения. Я дал макет данных ниже. Я хотел бы построить графики с привязкой по местоположению, где x as.factor(Time), Y как%, со столбцами нужно соединить по группам и заполнить средним значением каждого E,T,P, показывая стандартные полосы ошибок. Хотя мне повезло, когда я строил отдельные значения в виде точек, я не могу строить их в виде столбцов с накоплением. Ценю помощь.

Location    Group   Time    Mean E  Mean T  Mean P  SE E    SE T    SE P
Farm        T        48     0.52    0.02    0.47    0.29    0.07    0.29
Farm        C        48     0.37    0.03    0.61    0.28    0.09    0.28
Farm        T        24     0.59    0.01    0.40    0.28    0.06    0.28
Farm        C        24     0.56    0.01    0.43    0.29    0.05    0.29
Farm        T        0.5    0.56    0.01    0.43    0.29    0.04    0.29
Farm        C        0.5    0.35    0.01    0.64    0.28    0.05    0.28
Pristine    T        48     0.46    0.03    0.52    0.29    0.10    0.29
Pristine    C        48     0.43    0.02    0.55    0.29    0.08    0.29
Pristine    T        24     0.43    0.02    0.55    0.29    0.08    0.29
Pristine    C        24     0.26    0.04    0.71    0.25    0.11    0.26
Pristine    T        0.5    0.52    0.03    0.45    0.29    0.09    0.29 
Pristine    C        0.5    0.33    0.03    0.65    0.27    0.09    0.28

1 ответ

Пытаться:

dput(dat)
structure(list(Location = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Farm", "Pristine"), class = "factor"), 
    Group = structure(c(2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
    2L, 1L), .Label = c("C", "T"), class = "factor"), Time = c(48, 
    48, 24, 24, 0.5, 0.5, 48, 48, 24, 24, 0.5, 0.5), `Mean E` = c(0.52, 
    0.37, 0.59, 0.56, 0.56, 0.35, 0.46, 0.43, 0.43, 0.26, 0.52, 
    0.33), `Mean T` = c(0.02, 0.03, 0.01, 0.01, 0.01, 0.01, 0.03, 
    0.02, 0.02, 0.04, 0.03, 0.03), `Mean P` = c(0.47, 0.61, 0.4, 
    0.43, 0.43, 0.64, 0.52, 0.55, 0.55, 0.71, 0.45, 0.65), `SE E` = c(0.29, 
    0.28, 0.28, 0.29, 0.29, 0.28, 0.29, 0.29, 0.29, 0.25, 0.29, 
    0.27), `SE T` = c(0.07, 0.09, 0.06, 0.05, 0.04, 0.05, 0.1, 
    0.08, 0.08, 0.11, 0.09, 0.09), `SE P` = c(0.29, 0.28, 0.28, 
    0.29, 0.29, 0.28, 0.29, 0.29, 0.29, 0.26, 0.29, 0.28)), .Names = c("Location", 
"Group", "Time", "Mean E", "Mean T", "Mean P", "SE E", "SE T", 
"SE P"), class = "data.frame", row.names = c(NA, -12L))

# maybe there is an easier way to do this merge?
library(data.table)
dat_m1 <- setDT(melt(dat[,1:6],id=c('Group','Time','Location')))
dat_m2 <- setDT(melt(dat[,c(1:3,7:9)],id=c('Location','Time','Group')))
dat_m1$var_group <- sapply(as.character(dat_m1$variable),function(x) unlist(strsplit(x, ' '))[2])
dat_m2$var_group <- sapply(as.character(dat_m2$variable),function(x) unlist(strsplit(x, ' '))[2])
setkey(dat_m1,Time,Location,Group,var_group)
setkey(dat_m2,Time,Location,Group,var_group)
dat_m <- merge(dat_m1,dat_m2, allow.cartesian=TRUE)


# suggested alternative for clarity
mydodge <- position_dodge(width=0.8)

ggplot(dat_mm,aes(x=as.factor(Time),y=value.x, ymin=value.x-value.y,  
                     ymax=value.x+value.y,fill=variable.x)) + 
  geom_bar(stat='identity', position=mydodge, width=0.7) + 
  geom_errorbar(position=mydodge,width=0.2,stat='identity') +
  facet_grid(Location ~ Group)

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

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