Stripplot显示均值+ sd [r]

时间:2015-04-01 09:04:16

标签: r panel lattice

您好我想绘制一个显示平均值+标准差的stripplot。我无法显示箱线图,因为我的值少于5,所以我想使用mean和sd。我的问题是我无法计算组中的平均值和sd,而是我得到两个表示在两个组中的方法,并且对于分段表示相同。

require(lattice)

stripplot(l ~ Medium, parameters,

       ylab=list(expression("lag phase - h"),cex=1.5),
       xlab=list("Medium", cex=1.5),
       auto.key=list(columns=2, rectangles=T, points=F, pch=16, at=NULL ),
       ylim=c(-2,15),
       up=parameters$l+parameters$sd.l,
       lo=parameters$l-parameters$sd.l,
       panel=function(x,y,up,lo,...){
         xj=jitter(as.numeric(x), factor=0.5)
         panel.stripplot(xj,y,pch=16 , alpha=0.5 , factor=0.2,
                         cex=1.2 , ...)
         panel.abline(h=0,col="black",...)
         panel.arrows(x0=xj, y0=lo,
                      x1=xj, y1=up,code=3,
                      angle=90, length=0.05
                      ,alpha=0.5)
         panel.dotplot(x=x, y=tapply(y,x,mean), col="red")
         panel.segments(x0=x,x1=x,y0=mean(y)-sd(y),y1=mean(y)+sd(y),col="red")
       }


)

1 个答案:

答案 0 :(得分:0)

如果您使用Medium~l|Medium而不是l~Medium,则可以计算面板函数中每个级别的均值和sd。

例如

stripplot(~Sepal.Length|Species,iris,
  panel=function(x,y,...) {
     m=mean(x)
     panel.stripplot(x,y,...)
     panel.stripplot(m,y,pch="|",cex=2,col=2)
  }
)

否则,您可以使用stripplotby或类似内容计算aggregate之外的每个级别的均值和sd,然后将其添加到图中。