首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分组水平盒图与bwplot

分组水平盒图与bwplot
EN

Stack Overflow用户
提问于 2013-11-24 08:24:53
回答 2查看 5.3K关注 0票数 5

下面的代码允许通过bwplot函数在lattice中进行分组垂直方框绘制。可复制的例子。

代码语言:javascript
复制
data(mpg, package = "ggplot2") 

bwplot( hwy~class, data = mpg, groups = year,
    pch = "|", box.width = 1/3,
    auto.key = list(points = FALSE, rectangles = TRUE, space = "right"),
    panel = panel.superpose,
    panel.groups = function(x, y, ..., group.number) {
        panel.bwplot(x + (group.number-1.5)/3, y, ...)
     })

这样做很好,但是我希望方框是水平的,所以我更改了第一行,保持其他所有内容相等:

代码语言:javascript
复制
bwplot( class~hwy, data = mpg, groups = year, ...

但图是这样出来的

。我试过玩弄代码,但没有成功。我有两个问题:第一,我怎样才能,或者是否有可能不把这些情节叠加在一起?第二,也是更一般的,我如何将彩色面板设置为灰度,从而使情节以灰色或黑色和白色表示出来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-24 09:08:59

如果使用bwplot并不重要,可以尝试ggplot

代码语言:javascript
复制
ggplot(data = mpg, aes(x = class, y = hwy, fill = factor(year))) +
  geom_boxplot() +
  coord_flip() +
  scale_fill_grey(start = 0.5, end = 0.8) +
  theme_classic()

票数 4
EN

Stack Overflow用户

发布于 2013-11-24 11:38:16

  • 您还应该在panel.groups函数中反转x和y角色。
  • 使用trellis.par.set更改叠加符号的填充颜色

代码语言:javascript
复制
data(mpg, package = "ggplot2") 
library(latticeExtra)
mycolors <- grey.colors(5, start = 0.1, end = 0.9)
trellis.par.set(superpose.symbol = list(fill = mycolors,col=mycolors))
bwplot(class~hwy, data = mpg, groups = year,
                pch = "|", box.width = 1/3,
                panel = panel.superpose,
                panel.groups = function(x, y,..., group.number) 
                    panel.bwplot(x,y + (group.number-1.5)/3,...)
            ) 

但是在这里使用ggplot2解决方案可能更容易。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20172560

复制
相关文章

相似问题

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