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

时间:2013-02-07 20:28:02

标签: 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),
                    observed=runif(n=20,min=0,max=10))

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

lower.limupper.lim绘制为type="s",将observed绘制为type=c("p","l")

我认为这应该适用于自定义panel函数,但我无法弄清楚如何分别对每个因变量进行操作。

1 个答案:

答案 0 :(得分:4)

您可以在panel.groups中使用panel.superpose以及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))