将stripplot点添加到bwplot(R中的Lattice图形)

时间:2013-10-03 08:14:32

标签: r lattice bwplot

##Example data to illustrate problem:
type=c("grp1","grp2","grp1","grp3","grp3","grp3","grp4")
num=c(1,1,2,4,3,5,1)
cols=c(rep("red",5),"green","red")

library(lattice)
bwplot(num~type)
par(new=T)
stripplot(num~type,col=cols)

我喜欢方框图显示的附加信息,但我需要条形图中彩色点传达的信息。显然par(new = T)不起作用,那么如何将点叠加到箱形图上呢?

2 个答案:

答案 0 :(得分:2)

您可以像这样定义panel函数:

library(lattice)
bwplot(num~type,panel=function(x,y,...){
    panel.bwplot(x,y,...)
    panel.stripplot(x,y,col=cols,...)
})

enter image description here

答案 1 :(得分:0)

agstudy的答案非常好,但正如我在评论中指出的那样,bwplot绘制的任何异常值也将由stripplot绘制,这可能会让人感到困惑。

请注意,如果您使用jitter.data=TRUE作为stripplot的选项,这只是一个问题,否则重复的点会直接在彼此之上绘制,而您永远不会知道它们在那里。如果数据有异常值,并且您使用了jitter.data=TRUE,那么您会看到两倍的异常值。

以下方法会抑制bwplot中的异常值以避免此问题:

bwstrip <- function(x,y,...){
  panel.stripplot(x,y,col=cols,do.out=FALSE,jitter.data=TRUE,...)
  panel.bwplot(x,y,...)
}
bwplot(lobe.depths,panel=bwstrip)