在格子图中的每个面板上添加几条黄土线

use*_*386 1 r lattice

我试图在格子图中的每个面板上添加几条黄土线。每条黄土线代表不同级别的 Spe 柱。这是我的数据集的链接:

https://gist.github.com/plxsas/4756fc8d8e50f62acf4d

你能帮我一下吗?

my.col1<- c("white", "darkgray", "black", "lightgray",  "ivory2")
my.col2<- c("white", "darkgray", "black", "lightgray",  "ivory2")

labels<- c("H", "A", "E", "Q", "T")

xyplot(Total~Months|Site,data=data, groups=Spe,  layout=c(3,1), index.cond=list(c(1,2,3)),
     par.settings = list(superpose.polygon = list(col=c(my.col1, my.col2))), superpose.line=list(col=c(my.col1, my.col2)),
     ylab="Individuals", xlab="Months",
     scales=list(x=list(rot=90, alternating=1,labels=c("Jan-12", "Feb-12", "Mar-12", "Apr-12", "May-12", "Jun-12", 
                                         "Jul-12", "Aug-12", "Sep-12", "Oct-12", "Nov-12", "Dec-12", "Jan-13"))),
     auto.key=list(space="top", columns=3, cex=.8,between.columns = 1,font=3,
                   rectangles=FALSE, points=TRUE, labels=labels),
   panel = function(x, y, ...){
     panel.xyplot(x, y, ...)
     panel.loess(x, y, span = 1/2)
   })
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 5

正如@BondedDust 指出的那样,该panel.superpose功能在这里很有帮助例如

#sample data
data<-expand.grid(Months=1:13, Site=paste("Site", 1:3), Spe=labels)
data$Total<-sort(runif(nrow(data), 100,10000))+rnorm(nrow(data),50, 20)

my.col1<- c("white", "darkgray", "black", "lightgray",  "ivory2")
my.col2<- c("white", "darkgray", "black", "lightgray",  "ivory2")
mlabels<- c("Jan-12", "Feb-12", "Mar-12", "Apr-12", "May-12", "Jun-12", 
    "Jul-12", "Aug-12", "Sep-12", "Oct-12", "Nov-12", "Dec-12", "Jan-13")
labels<- c("H", "A", "E", "Q", "T")

xyplot(Total~Months|Site,data=data, groups=Spe,  
    layout=c(3,1), index.cond=list(c(1,2,3)),
    par.settings = list(
        superpose.polygon = list(col=c(my.col1, my.col2))), 
        superpose.line=list(col=c(my.col1, my.col2)),
    ylab="Individuals", xlab="Months",
    scales=list(x=list(rot=90, alternating=1,labels=mlabels)),
    auto.key=list(space="top", columns=3, cex=.8,between.columns = 1,font=3,
        rectangles=FALSE, points=TRUE, labels=labels),
    panel = panel.superpose,
    panel.groups = function(x,y,...) {
        panel.xyplot(x, y, ...)
        panel.loess(x, y, ...)
    }
)
Run Code Online (Sandbox Code Playgroud)

使用此方法,您将主面板功能panel.superpose设置为然后为每个组设置一个panel.groups传递给的参数panel.superpose。该panel.superpose负责找出每个组的颜色和传递正确的xy值。因此,您只需输入您想要绘制的内容,然后通过's 中panel.superpose为您计算的 所有内容...

输出图