使用R中的for循环在子图中绘制多个参数?

时间:2014-06-10 21:26:05

标签: r loops for-loop plot

我想使用par(mfrow = c(2,2))做4个图的数字。我已经设法在一个循环中做到这一点。但是 - 下一步是在每个“子图”中添加第二个参数(时间序列)。结果应为4个图,每个时间序列有两个不同的颜色。我不能让这个工作!我的结果是4个图,只有最后一个时间序列(深度)。我试过par(new = true),但它不起作用。请帮助任何人?

toplot <- cbind(ox_s, AOU, ox_sat, o2) # My data, 4 parameters
D = c(40,50)                           # 2 depths I want to plot the data from
nr_col = length(D)                     
myColorMap = rainbow(nr_col)           # to use different colours for different depths

par(mfrow=c(2,2))                      # setting up 4 plots

for (j in 1:length(D)){                # looping over depths
index = which(my_depth == D[j])        # finding rows for my depths
for (k in 1:ncol(toplot)){             # looping over parameters
plot(as.Date(my_time[index]),toplot[index,k], type = "b", 
xlim = range(st,en),col = myColorMap[j])
}
}

1 个答案:

答案 0 :(得分:0)

你能扭转循环的顺序吗?即为第一个绘图做两个部分(绘图,然后使用linespoints添加到绘图中),然后移动到第二个绘图,等等。这可能是最简单的。

另一个选项,如果你觉得你真的需要先做所有的初始图,然后回去添加它们,就是在每个图之后保存图形参数,然后第二次使用par(mfg=...来重新选择一个图,将图形参数重置为它们,然后添加到图中。

您可能还想查看matplot函数或检查ggplot2或晶格包,以了解在图中使用多行创建多面图的其他方法。