R 中具有标准差的增长曲线

Growth curves in R with standard deviation

我正在尝试绘制我的数据(每个菌株的重复结果)并且我只需要每个菌株的一个折线图,这意味着每个菌株的平均重复结果以及带有误差线的点(误差在复制数据)。

如果你点击上面的图片,它会显示我目前的绘图,其中将 WT 和 WT.1 显示为单独的线和所有其他复制品。然而,它们是每个菌株(WT、DrsbR、DsigB)的复制品,我希望它们显示为每个菌株的一行平均结果。我正在使用 ggplot package- 和 melting data with reshape package,但无法弄清楚如何使我的复制品与误差线一起显示为一行(复制品之间平均结果的标准偏差)。 黑白图像是我在我的图表中寻找的东西 - 单独的线,将复制数据点绘制为平均值。

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)

一种方法是使用来自tidyr。我没有你的数据集——如果你能通过 dput(your.data.frame) 分享你的数据集以备将来提问,我将不胜感激——所以我制作了一个类似于你的虚拟数据集。这里我们有两个 "species"(红色和蓝色)和每个物种两个 "strains"。

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() 将生成的 "variable" 列分成 "species" 列和 "strain" 列。幸运的是,您的数据包含一个“.”。这可以是一个方便的字符用于分离:

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

注意:上面的代码会给你一个与"blue"和"red"没有“.”这一点相关的警告。字符,从而为 "strain" 列提供 NA。我们在这里不关心,因为我们没有使用该列来做任何事情。在自己的数据集中,同样可以不用太在意。

然后,您实际上可以对所有 geom 使用 stat_summary()...根据自己的视觉和主题偏好进行修改。请注意,顺序对于分层很重要,因此我先绘制 geom_line,然后绘制 geom_point,然后绘制 geom_errorbar。另请注意,您可以在基础 ggplot() 调用中分配 group=species 美学,并且该映射适用于所有 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()