如何在R中的bwplot中添加均值作为一个点?

时间:2015-03-20 04:08:02

标签: r

对于我发布的简单问题道歉,但我是R的新手,我发现很难通过可用的文档找到解决方案。

我只想添加一个平均值作为盒子的点和使用bwplot的胡须图。我见过类似的问题,但他们通常使用ggplot2或其他软件包。

我已经帮助构建了一个带有面板功能的矩形范围来添加到绘图中,所以我怀疑我的当前问题可以通过我的面板功能的进一步添加来解决。

我试图使用panel.average添加到我的面板功能,但没有运气。使用下面的示例代码,作为下面的示例,我尝试过:

library(lattice)
library(MASS)
data <- Cars93[,c("Manufacturer", "Price")] 

testpanel <- function (x,y,...) {
  panel.rect(xleft = 0, xright = 5, ybottom = 15, ytop = 25, col="aliceblue", border = 0)
  panel.average(x,y, fun=mean, identifier="point") #my attempt to add a point to represent the mean
  panel.bwplot(x, y, ...)
}

bwplot(Price ~ Manufacturer, 
       data=rbind(transform(data, Manufacturer="All"), data[data$Manufacturer=="Chevrolet",]),
       panel = testpanel,
       pch='|'

       )

enter image description here

任何帮助将不胜感激!

  • 作为旁注 - 如果有人可以指导我使用任何好的教程或资源来处理格子中的面板和R中的一般图形 - 我们将不胜感激。我发现R文档很难破译。

1 个答案:

答案 0 :(得分:2)

这是bwplot,Deepayan Sarkar的作者9年前在Rhelp上回答的问题:

panel.mean <- function(x, y, ...) {
    tmp <- tapply(x, y, FUN = mean)
    panel.points(tmp, seq(tmp), pch = 20, ...)
}

我需要切换x和y值才能让它工作:

panel.mean <- function(x, y, ...) {
    tmp <- tapply(y, x, FUN = mean); print(tmp)
    panel.points(y=tmp, x=seq_along(tmp), ...)
}

bwplot(Price ~ Manufacturer, 
       data=rbind(transform(data, Manufacturer="All"), data[data$Manufacturer=="Chevrolet",]),
       panel = function(x,y, ...) { panel.bwplot(x,y,...)
                 panel.mean(x,y, pch='*', col="red", cex=3)
                            }
       )

enter image description here