0
##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) 不起作用,那么如何将这些点叠加到箱线图上呢?

4

2 回答 2

2

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

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

在此处输入图像描述

于 2013-10-03T08:18:55.000 回答
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)
于 2014-10-02T19:30:07.720 回答