格子包:为箱图添加平均值

时间:2015-02-12 12:01:52

标签: r lattice boxplot

我正在尝试使用网格包创建箱图,并向其添加平均值。我注意到,根据方法,方框相同,但平均值有时错误

它似乎与(不)使用 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

https://www.dropbox.com/s/mggehy7gst55trr/p2.png?dl=0

0 个答案:

没有答案