Как составить график различий между двумя группами по нескольким дням выборки? - PullRequest
0 голосов
/ 20 ноября 2018

Я рассчитываю на графике различия в значениях между двумя группами (Elevated Temp и Control).Я хотел бы иметь возможность построить их так же, как мой исходный график с месяцами по оси X.

Вот следующий скрипт, который я использовал, чтобы добраться до текущего графика 1 , что я наметил.Это показывает ось у = рост растения и ось х = месяцы.

Сценарий: текущий график

Tempmean<- data %>% group_by (Treatment, Month) %>% summarize (TTmean = mean(Amean, na.rm=TRUE), TTsd=sd(Amean,na.rm=TRUE))


p<-ggplot(data=Tempmean, aes(x=factor(Month), y=TTmean, fill=Treatment)) +
  geom_bar(stat="identity", position="dodge", colour="black" , size = 0.25, width=0.5) + geom_errorbar(aes(ymin=TTmean-TTsd, ymax=TTmean+TTsd), width=.1,
                position=position_dodge(.5)) + scale_fill_manual(values=c("darkgray","darkolivegreen")) + scale_x_discrete(breaks=6:8,labels=c("June","July","August")) + scale_y_continuous(limits=c(0,20), breaks=seq(0,20,2))
p

Это данные, с которыми я работаю 2.Я хотел бы взять TTmean eCO2 из TTmean aCO2.

Данные:

    structure(list(Treatment = c("aCO2", "aCO2", "aCO2", "eCO2","eCO2", "eCO2"), Month = c(6L, 7L, 8L, 6L, 7L, 8L), TTmean = c(10.1922587348143,10.1061784054575, 8.27148533916994, 12.0261355594138,10.8954781586458, 10.9468200269188), TTsd =c(7.04936647397141,4.18653008350561, 1.50026716071241, 3.25471492346035, 0.742036555955107, 2.00464198948226)), row.names = c(NA, -6L), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), vars = "Treatment", drop = TRUE, indices = list(0:2, 3:5), group_sizes = c(3L, 3L), biggest_group_size = 3L, labels = structure(list(Treatment = c("aCO2", "eCO2")), row.names = c(NA, -2L),class = "data.frame", vars = "Treatment", drop = TRUE))         

1 Ответ

0 голосов
/ 21 ноября 2018

Это должно сработать.

Я бросил TTsd, потому что, похоже, вам это не нужно.Хитрость заключается в spread() данных, чтобы вы могли легко вычислить разницу в значениях.Я вычислил как aCO2 минус eCO2;но вы можете изменить это в mutate()

library(tidyverse)
Tempmean %>%
    select(-TTsd) %>%
    # either group_by Month, or just ungroup entirely
    group_by(Month) %>%
    spread(Treatment, TTmean) %>%
    mutate(T_diff = aCO2 - eCO2) %>%
    ggplot(aes(factor(Month), T_diff)) %+%
    geom_bar(position = "dodge", stat = "identity", size = 0.25, width=0.5) %+%
    scale_x_discrete(breaks=6:8,labels=c("June","July","August"))
...