我正在尝试使用网格包创建箱图,并向其添加平均值。我注意到,根据方法,方框相同,但平均值有时错误。
它似乎与(不)使用 panel = panel.superpose()相关。
我附上了一个工作示例和图片。例如,第一个“框”(cyl = 4,vs = 0):只有一个值,但计算出的平均值是在它上面绘制的。
有人知道那里发生了什么吗?任何帮助,将不胜感激。
一般情况下,何时可以简单地组合面板(p1)以及何时应该使用panel.superpose(p2)以避免此类问题?
谢谢。
library("datasets")
library("lattice")
df_1 <- mtcars
p1 <- bwplot(mpg ~ factor(vs) | factor(cyl), data = df_1,
panel = function(x,y,...){
panel.bwplot(x,y,..., pch = "|" )
panel.points(x, mean(y, na.rm = TRUE), pch = 3,col = "red",...)
})
p2 <- bwplot(mpg ~ factor(vs) | factor(cyl), data = df_1,
groups=factor(vs), pch="|",
panel = panel.superpose,
panel.groups = function(x,y,...) {
panel.bwplot(x,y,...)
panel.points(x,mean(y, na.rm = TRUE), col = "red", pch = 3)
})
输出:
print(p1) # wrong mean values
https://www.dropbox.com/s/m9rk6cdxyqp92tj/p1.png?dl=0
print(p2) # correct mean values