我有一个包含1104行和2列的数据框
a<-rep(1998:2013,times=69)
b<-rnorm(1104)
data<-data.frame(a,b)
我要做的是以下列方式绘制前48行:
plot(data$b[1:16] ~ data$a[1:16],col="red")
points(data$b[17:32] ~ data$a[17:32],col="green")
points(data$b[33:48] ~ data$a[33:48],col="blue")
这将给我一个包含三组数据的图表。然后我想为下一组48行重复这个,如下所示:
plot(data$b[49:64] ~ data$a[1:16])
points(data$b[65:80] ~ data$a[65:80])
points(data$b[81:96] ~ data$a[81:96])
我想继续重复直到第1104行
plot(data$b[1057:1072] ~ data$a[1057:1072])
points(data$b[1073:1088] ~ data$a[1073:1088])
points(data$b[1089:1104] ~ data$a[1089:1104])
有什么方法可以把它放在循环中吗?这意味着我将有23个情节。
感谢您的帮助。
答案 0 :(得分:1)
我会在初始数据集中添加一些列。
set.seed(1)
a<-rep(1998:2013,times=69)
b<-rnorm(1104)
set<-rep(1:23,each=48)
col<-rep(c("red","green", "blue"),each=16, times=23)
data<-data.frame(a,b, set, col)
我喜欢使用ggplot,但如果你想要
,你可以使用baselibrary(ggplot2)
pdf("multplot.pdf")
for (x in 1:23){
#subset data based on set
df.s<-subset(data, set==x)
g<-ggplot(df.s, aes(x=a,y=b, color=col))+geom_point()
print(g)
}
dev.off()
在基地R
pdf("multplot2.pdf")
for (x in 1:23){
df.s<-subset(data, set==x)
#the `col` column is not used
plot(df.s$b[1:16] ~ df.s$a[1:16],col="red")
points(df.s$b[17:32] ~ df.s$a[17:32],col="green")
points(df.s$b[33:48] ~ df.s$a[33:48],col="blue")
}
dev.off()