Кривые роста в R со стандартным отклонением - PullRequest
1 голос
/ 15 апреля 2020

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

lines unfortunately separate for each strain replicate

Если вы нажмете на изображение выше, оно покажет график, который у меня есть, который отображает WT и WT.1 в виде отдельных линий и все другие копии. Тем не менее, они являются копиями каждого штамма (WT, DrsbR, DsigB), и я хочу, чтобы они отображались в виде одной линии средних результатов для каждого штамма. Я использую пакет ggplot и данные о плавлении с изменением формы, но не могу понять, как сделать так, чтобы мои реплики отображались одной строкой вместе со столбцами ошибок (стандартное отклонение средних результатов между репликами). Черно-белое изображение - это то, что я ищу в отдельной графике линии с точками повторяющихся данных, нанесенными в виде среднего значения.

This image shows similiar plot i am looking for, each line representing 2 or 3 replicates with points along the line with errors of data tested at each time point

library(reshape2)
melted<-melt(abs2)
print(abs2)
melted<-melt(abs2,id=1,measured=c("WT","WT.1","DsigB","DsigB.1","DrsbR","DrsbR.1"))
View(melted)
colnames(melted)<-c("Time","Strain","Values")
##line graph for melted data
melted$Time<-as.factor(melted$Time)
abs2line=ggplot(melted,aes(Time,Values))+geom_line(aes(colour=Strain,group=Strain))
abs2line+
  stat_summary(fun=mean,
               geom="point",
               aes(group=Time))+
  stat_summary(fun.data=mean_cl_boot,
               geom="errorbar",
               width=.2)+
  xlab("Time")+
  ylab("OD600")+
  theme_classic()+
  labs(title="Growth Curve of Mutant Strains")
summary(melted)
print(melted)

1 Ответ

0 голосов
/ 15 апреля 2020

Один из подходов состоит в том, чтобы взять ваш расплавленный фрейм данных и separate вывести столбец «переменная» в «виды» и «штамм», используя функцию separate() из tidyr. У меня нет вашего набора данных - будет полезно, если вы сможете поделиться своим набором данных через dput(your.data.frame) для будущих вопросов - поэтому я создал фиктивный набор данных, который похож на ваш. Здесь у нас есть два «вида» (красный и синий) и два «штамма» для каждого вида.

df <- data.frame(
    time = seq(0, 40, by=10),
    blue = c(0:4),
    blue.1 = c(0, 1.1, 1.9, 3.1, 4.1),
    red = seq(0, 8, by=2),
    red.1 = c(0, 2.1, 4.2, 5.5, 8.2)
)

df.melt <- melt(df,
    id.vars = 'time',
    measure.vars = c('blue', 'blue.1', 'red', 'red.1'))

Затем мы можем использовать tidyr::separate(), чтобы разделить результирующий «переменный» столбец на «виды» столбец и столбец "напряжение". К счастью, ваши данные содержат «.» который может быть удобным символом для разделения:

df.melt.mod <- df.melt %>%
    separate(col=variable, into=c('species', 'strain'), sep='\\.')

Примечание. Приведенный выше код предупредит вас о том, что «синий» и «красный» не имеют "" характер, тем самым давая вам NA для столбца «напряжение». Нам все равно здесь, потому что мы не используем этот столбец для чего-либо здесь. В вашем собственном наборе данных вы тоже можете не слишком заботиться.

Тогда вы можете просто использовать stat_summary() для всех геомов ... изменить, как считаете нужным для вашего собственного визуального и тематического материала c предпочтение. Обратите внимание, что порядок имеет значение для наслоения, поэтому я сначала строю geom_line, затем geom_point, затем geom_errorbar. Также обратите внимание, что вы можете назначить group=species эстетику c в базовом вызове ggplot(), и это сопоставление применяется ко всем geoms, если оно не перезаписано.

ggplot(df.melt.mod, aes(x=time, y=value, group=species)) +
    stat_summary(
        fun = mean,
        geom='line',
        aes(color=species)) +
    stat_summary(
        fun=mean,
        geom='point') +
    stat_summary(
        fun.data=mean_cl_boot,
        geom='errorbar',
        width=0.5) +
    theme_bw()

enter image description here

...