使用R中的晶格为xyplot中的每个面板添加不同的垂直线

使用R中的晶格为xyplot中的每个面板添加不同的垂直线,r,lattice,R,Lattice,我在lattice软件包中使用xyplot绘制了几个地点的植物物种频率图。我已经找到了如何获得每个物种站点组合的散点图。然而,我想添加一个代表每年进行化学处理的abline。化学处理是在不同的年份在每个地点添加的,我想为每个物种添加一个垂直基线,在该地点进行化学处理。这是我的xyplot代码: library(plyr) sp.1 <- data.frame(site=rep('a', 10), year=seq(2001, 2010, 1), year.trt=c(NA, NA, NA,

我在lattice软件包中使用xyplot绘制了几个地点的植物物种频率图。我已经找到了如何获得每个物种站点组合的散点图。然而,我想添加一个代表每年进行化学处理的abline。化学处理是在不同的年份在每个地点添加的,我想为每个物种添加一个垂直基线,在该地点进行化学处理。这是我的xyplot代码:

library(plyr)
sp.1 <- data.frame(site=rep('a', 10), year=seq(2001, 2010, 1), year.trt=c(NA, NA, NA, NA, 2005, NA, NA, 2008, NA, NA), pl.1=rnorm(10, 4, 1), pl.2=rnorm(10, 6, 2))
sp.2 <- data.frame(site=rep('b', 10), year=seq(2001, 2010, 1), year.trt=c(2001, NA, NA, NA, NA, 2006, NA, NA, NA, NA), pl.1=rnorm(10, 5, 2), pl.2=rnorm(10, 4, 1))
sp.3 <- data.frame(site=rep('c', 10), year=seq(2001, 2010, 1), year.trt=c(NA, NA, NA, 2004, NA, NA, NA, NA, 2009, NA), pl.1=rnorm(10, 8, 1), pl.2=rnorm(10, 3, 3))
data <- rbind.fill(sp.1, sp.2, sp.3)

xy.plot <- xyplot(pl.1 + pl.2 ~ year | site, data=data, outer=T, type='l',              
as.table=T, xlab=c('Year'), ylab=c('Spp. Frequency (%)'),
panel=function(x, y,...){
    panel.xyplot(x,y, type='l')
    panel.abline(v=data$year.trt)
})
print(xy.plot)
因此,此块中的重要代码行是“panel.ablinev=test$trt.year”。目前,在我的数据集中,这张图显示了进行化学处理的所有年份,但是,我希望它能在每个面板中显示针对特定场地进行处理的年份

如有任何见解,将不胜感激

谢谢,
Paul

请提供一个可复制的示例。但是,如果我理解正确,您的问题的解决方案可能会涉及panel.number,例如,或者。正确答案是什么?好的,我已经部分解决了问题。我已将关注点更改为panel.ablinev=data$year.trt[data$site==sites[panel.number]],其中sites是sites Nevermind。我意识到,对于我的sites对象,我只有足够的值来索引第一层面板编号。我只是将我的站点对象翻了一番,例如站点