2015-09-25 55 views
0

我有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]) 

我要不停地重复它,直到第一千一百○四行

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

你的代码是相当不清楚你想要什么,考虑你是限制你的初始图中x轴的长度为'data $ a [1:16]',你想堆叠所有数据点的位置?你有一个期望的输出(或类似的)的图像?你的限制访问2个不同的数据集,是故意的(b的最小值,最大值)? – Badger

+0

我删除了那一点。这不是必要的。谢谢 – KS89

+0

你能证明一个情节是怎样的吗?你的“积分”不在情节之中,而且他们也没有被绘制。什么是期望的输出? – Ananta

回答

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工作,但你使用的基地,如果你在基础R要

library(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() 

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() 
+0

谢谢!这工作正常 – KS89