如何在R中的xyplot中添加平均线?

时间:2014-01-24 13:14:35

标签: r lattice

您好我正在尝试使用以下代码向格子xyplot添加平均线...这不起作用...

library(lattice)
temp <- data.frame(c(1,1,1,1,1,1,2,2),
      c(1,1,2,2,1,1,1,1),
      c(1,1,1,2,1,2,1,2),
      c(0,0,0,150,150,0,0,0),
      c(3,10,4,15,14,2,4,5))
names(temp) <- c("instNo","NoOfAC","NoReleaseLevels","trExt","maxDelay")

tempavg <- aggregate(temp[5], by=list(temp$NoOfAC,temp$NoReleaseLevels
                                  ,temp$trExt),FUN = mean)

names(tempavg) <- c("NoOfAC","NoReleaseLevels","trExt","meanDelay")
xyplot(maxDelay ~ NoOfAC |trExt + NoReleaseLevels,
             data = temp,
             panel = function(x, y, tempavg) {
               panel.xyplot(x, y)
               panel.abline(tempavg$meanDelay ~ y |trExt + NoReleaseLevels)
             },
xlab = "Number Of Aircraft in the Instance",
ylab = "Total Delay (minutes)")

1 个答案:

答案 0 :(得分:2)

您的方法的主要问题是它在哪里说panel.abline()将公式作为其第一个参数? (它没有!)?panel.abline所说的是它需要参数hv(特别是对于你想到的情况)并且你想要参数{{1 }}

另请注意, lattice 会调用面板函数,其中参数hx包含绘制的每个面板的yx数据。您不需要为此工作进行外部子集化和聚合;它是为你完成的。因此,在使用面板函数绘制时,您需要考虑yx

在这种情况下,您需要在面板功能中使用ypanel.abline(h = mean(y), ...)允许传递给面板函数的额外参数传播到面板函数中的函数调用。因此,您的匿名面板函数也需要采用...参数。如下所示。

...