R 如何控制晶格xyplot中多个因变量的绘图类型?

R 如何控制晶格xyplot中多个因变量的绘图类型?,r,lattice,R,Lattice,假设您有一个数据集,其中一个因变量包含多个因变量。使用xyplot可以将它们简单地绘制为xyplot(y1+y2~x,data=d)。您将如何使用一种打印类型(例如点)打印y1,如何使用不同的打印类型(例如线)打印y2 一个可重复的例子: my.df <- data.frame(time=c(1:20), lower.lim=runif(n=20, min=1,max=4), upper.lim=runif(n=20, min=6,max=9),

假设您有一个数据集,其中一个因变量包含多个因变量。使用
xyplot
可以将它们简单地绘制为
xyplot(y1+y2~x,data=d)
。您将如何使用一种打印类型(例如点)打印
y1
,如何使用不同的打印类型(例如线)打印
y2

一个可重复的例子:

my.df <- data.frame(time=c(1:20), lower.lim=runif(n=20, min=1,max=4),
                    upper.lim=runif(n=20, min=6,max=9),
                    observed=runif(n=20,min=0,max=10))

xyplot(lower.lim + upper.lim + observed ~ time, data=my.df, type=c("p","l"))

my.df您可以在
面板中使用
panel.groups
。与
group.number
参数一起叠加
,以检测当前正在绘制的变量

panelfun <- function(...,type,group.number) {
    if (group.number==3) {
        panel.points(...)
        panel.lines(...)
    } else {
        panel.points(...,type="s")
    }
}

xyplot(lower.lim+upper.lim+observed ~ time, data=my.df,
    panel=function(...) panel.superpose(...,panel.groups=panelfun),
       col=c(1,1,2))

panelfun您可以在
面板中使用
panel.groups
。与
group.number
参数叠加,以检测当前正在绘制的变量

panelfun <- function(...,type,group.number) {
    if (group.number==3) {
        panel.points(...)
        panel.lines(...)
    } else {
        panel.points(...,type="s")
    }
}

xyplot(lower.lim+upper.lim+observed ~ time, data=my.df,
    panel=function(...) panel.superpose(...,panel.groups=panelfun),
       col=c(1,1,2))
panelfun