我有一张来自不同卫星的63个样本点的植被指数导出表。这给了我一个包含63个观察值(样本点)和56个变量(1个样本ID,50个植被指数,4个生物量和1个LAI)的表格。表的最后5列是生物量和LAI,第一列是样本ID。我想生成一个曲线图,显示单个植被指数与其中一个生物量参数之间的关系。我可以使用plot函数来做到这一点,一次只有一个观察值和变量。
plot(data$Dry10, data$X8047EVImea)我不想为每个生物量和LAI参数运行这段代码50次和5次。
有没有办法循环或嵌套循环这个绘图函数,这样我就可以一次生成200张图?
此外,我将在每个地块中放置一条回归线,以查看什么植被指数最能代表样本点存在的生物量。
这是我在stackoverflow上的第一篇文章,所以如果我遗漏了什么,请不要犹豫,请求更多关于这个问题的信息。
发布于 2015-09-02 06:11:08
正如我在评论中所指出的,您可以使用ggplot2包中的分面图来实现这一点。这确实需要一些数据重新排列,这可以通过reshape2包来完成。下面是一些接近你想要做的事情的代码,但由于我不完全了解你的数据格式,它可能需要一些修复:
library(ggplot2)
library(reshape2)
library(dplyr)
vegDat <- data[,2:51]
bioDat <- data[,52:55]
## melt the data.frames so the biomass and vegetation headers are now variables
vegDatM <- melt(vegDat, variable.name='vegInd', value.name='vegVal')
bioDatM <- melt(bioDat, variable.name='bioInd', value.name='bioVal')
## Join these datasets to create all comparisons to be made
gdat <- bind_cols(vegDatM[rep(seq_len(nrow(vegDatM)), each=nrow(bioDatM)),],
bioDatM[rep(seq_len(nrow(bioDatM)), nrow(vegDatM)),])
## plot the data in a faceted grid
ggplot(gdat) + geom_point(aes(x=vegVal, y=bioVal)) + facet_grid(vegInd ~ bioInd)请注意,由于有50个图,您可能想要打开一个高度较大的器件(如果交换小平面,则为宽度),例如pdf('foo.pdf',heigth=20)。希望这能让你走上正轨。
https://stackoverflow.com/questions/32340039
复制相似问题