【问题标题】:Grouped horizontal boxplot with bwplot带 bwplot 的分组水平箱线图
【发布时间】:2013-11-24 08:24:53
【问题描述】:

我有以下代码允许通过lattice 中的bwplot 函数进行分组垂直箱线图。可重现的例子..

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, ...)
     })

这很好用,但我希望箱线图是水平的,所以我更改了第一行,保持其他所有内容相同:

bwplot( class~hwy, data = mpg, groups = year, ...

但是图表是这样出来的。我尝试过使用代码但没有成功。我有两个问题:首先,我怎么能,或者是否可以让箱线图不相互叠加?其次,更一般地说,我怎样才能将颜色面板设置为灰度,以便情节以灰色阴影或只有黑色和白色的形式出现?

【问题讨论】:

    标签: r lattice bwplot


    【解决方案1】:
    • 您还应该在 panel.groups 函数中反转 x 和 y 角色。
    • 使用trellis.par.set改变叠加符号的填充颜色

    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 解决方案可能更容易。

    【讨论】:

      【解决方案2】:

      如果你使用bwplot不是很重要,你可以试试ggplot

      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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-31
        • 2021-12-04
        • 2021-09-23
        • 2021-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多