我有一个看起来像这样的数据框。
head(growthMelt)
Date Strain Replicate Fluor
1 2016-08-24 42-2 Fluor.I 14.01
2 2016-08-24 42-4 Fluor.I 9.60
3 2016-08-24 42-6 Fluor.I 47.66
4 2016-08-24 42-8 Fluor.I 28.47
5 2016-08-24 Control Fluor.I 51.61
6 2016-08-26 42-2 Fluor.I 75.78
我有5个菌株,每个菌株每个日期有三个荧光测量值。我需要为每个应变与日期的每个荧光测量值绘制一个图。所以,最终我需要得到像plot(Fluor~Date)
这样的东西。我需要五个图,每个图一个,每个图上有三个荧光(Fluor.I, Fluor.II, Fluor.III
)测量线。
有很多数据,所以我选择使用for循环来进行子集和绘图。到目前为止,我已经尝试过:
strains<-unique(growthMelt$Strain)
fluors<-unique(growthMelt$Replicate)
for(i in strains){
sub.strain<-subset(growthMelt, Strain==i)
for (i in fluors){
sub.flours<-subset(sub.strain, Replicate==i)
plot(Fluor~Date, sub.flours)
}
}
结果图仅显示一个菌株的一个Fluor复制品。 任何建议都将不胜感激。
另外,这是我关于Stack Overflow的第一个问题所以请保持温和。 :)
答案 0 :(得分:1)
您只会看到最后一个情节,因为它每次都会覆盖最后一个情节。因此,您可以尝试制作矩阵的mfrow。
par(mfrow=c(5,3))
strains<-unique(growthMelt$Strain)
fluors<-unique(growthMelt$Replicate)
for(i in strains){
sub.strain<-subset(growthMelt, Strain==i)
for (j in fluors){
sub.flours<-subset(sub.strain, Replicate==j)
plot(Fluor~Date, sub.flours)
}
}
或者您可以将每个地图保存到新文档(例如pdf):
for(i in strains){
sub.strain<-subset(growthMelt, Strain==i)
for (j in fluors){
sub.flours<-subset(sub.strain, Replicate==j)
pdf(paste("Plot_",i,"x",j,".pdf",sep=""))
plot(Fluor~Date, sub.flours)
dev.off()
}
}
或者只是一个大pdf
pdf("Plot.pdf")
for(i in strains){
sub.strain<-subset(growthMelt, Strain==i)
for (j in fluors){
sub.flours<-subset(sub.strain, Replicate==j)
plot(Fluor~Date, sub.flours)
}
}
dev.off()
或 ggplot 选项:
library(ggplot2)
p1 <- ggplot(growthMelt, aes(x=Date, y = Fluor)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
facet_grid(Strain ~ Replicate)
p1