2

假设您有一个数据集,其中一个因变量具有多个因变量。您可以将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"))

绘制lower.limupper.limastype="s"observedastype=c("p","l")

我认为这应该可以通过自定义panel函数实现,但我无法弄清楚如何分别对每个因变量进行操作。

4

1 回答 1

4

您可以与参数一起使用panel.groupswithin来检测当前正在绘制哪个变量。panel.superposegroup.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))
于 2013-02-08T00:06:34.710 回答