首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将点添加到多面板点阵图形bwplot?

如何将点添加到多面板点阵图形bwplot?
EN

Stack Overflow用户
提问于 2013-04-04 13:26:19
回答 1查看 5.8K关注 0票数 0

我正在使用bwplot在Lattice中制作盒子和胡须图。我想为means加分。我已经了解了如何使用panel.points对简单的绘图执行此操作。然而,当我使用+outer=TRUE制作一个多面板的bwplot时,我不知道如何在不同的面板中放置不同的点。此示例说明了我尝试的解决方案的问题,但解决方案不起作用。(为了简单起见,它将“x”放在任意点上,而不是放在均值上。)

代码语言:javascript
复制
# make some data:
df <- data.frame(var1=rnorm(20), var2=runif(20), cat=rep(c("Z"),20))
# cat isn't doing anything, but I couldn't get the mwe to work without it.

bwplot(var1 + var2 ~ cat, data=df, pch="|", coef=0, outer=TRUE, 
       panel=function(data, ...){
         panel.bwplot(...)
         panel.points(x=c(.5,-.5), pch="x", cex=2)
       }
      )

(结合使用outer=Tvar1 + var2可以创建两个面板。请参见下面的更简单的示例。)

我得到的是两个面板,每个面板上都有一个盒子和胡须的图。“x”放置在每个图的上方。在每个面板中,绘图上方的.5处都有一个"x“。这个过程不是在第二个面板中使用-.5,而是重新开始--Lattice再次抓住第一个点.5。

如何在不同面板中的绘图上显示不同的点?

谢谢。

稍后补充:我现在意识到这个问题与+outer=TRUE本身无关。使用常规的晶格条件作用可以获得相同的行为:

代码语言:javascript
复制
df <- data.frame(var1=rnorm(20), cat=rep("Z",20), cat2=rep(c("M","F"), 10))

bwplot(var1 ~ cat | cat2, data=df, pch="|", coef=0, outer=TRUE, 
           panel=function(data, ...){
             panel.bwplot(...)
             panel.points(x=c(.5,-.5), pch="x", cex=2)
           }
          )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-05 03:33:29

您应该使用accesor函数panel.number()为每个面板选择x值:

代码语言:javascript
复制
df <- data.frame(var1=rnorm(20), cat=rep("Z",20), cat2=rep(c("M","F"), 10))

bwplot(var1 ~ cat | cat2, data=df, pch="|", 
           panel=function(...){
             panel.bwplot(...)
             panel.points(x=c(.5,-.5)[panel.number()], 
                          pch="x", cex=2)
           }
          )

编辑:但是,如果你想为means添加点数,你并不真的需要panel.number。您可以定义一个panel.mean函数(在example by Deepayan之后)来计算和绘制它们:

代码语言:javascript
复制
panel.mean <- function(x, y, ...) {
    tmp <- tapply(y, factor(x), FUN = mean)
    panel.points(tmp, pch = 20, ...)
}

bwplot(var1 ~ cat | cat2, data=df,
       panel=function(...){
           panel.bwplot(..., pch='|')
           panel.mean(...)
           }
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15803149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档