【问题标题】:How do I create multiple boxplots whilst also making them proportional using geom_boxplot within ggplot2?如何创建多个箱线图,同时使用 ggplot2 中的 geom_boxplot 使它们成比例?
【发布时间】:2020-08-16 00:20:37
【问题描述】:

我知道 ggplot2 的 geom_boxplot 中的 varwidth = TRUE 可用于创建比例箱线图,以便每个箱线图还汇总了图中的点数。但是,我正在努力保持比例箱线图大小,同时还要生成多个图?

使用 ggplot2 中的菱形 df 我试图重现下图。

我试过的是这样的:

ggplot(data = diamonds, mapping = aes(x = carat, y = price)) + geom_boxplot(mapping = aes(group = cut_number(carat, 20), varwidth = TRUE))

我尝试使用 cut_number 来实现倍数,并使用 var-width 来实现比例。我还想让箱线图垂直显示。我已经为此困扰了几个小时,并且在网上查看过,但无济于事。有什么建议吗?

【问题讨论】:

    标签: r ggplot2 boxplot


    【解决方案1】:

    从 ggplot2 v3.3.0 开始,自动检测层的方向。在某些情况下,此检测可能不正确。您可以通过将其作为参数添加到图层来强制方向:

    library(ggplot2)
    
    ggplot(data = diamonds, mapping = aes(x = carat, y = price)) + 
      geom_boxplot(mapping = aes(group = cut_number(carat, 20)),
                   orientation = "x")
    

    reprex package (v0.3.0) 于 2020 年 5 月 1 日创建

    【讨论】:

    • 谢谢!只是为了进一步嵌入我的理解。 ggplot 3.30 现在能够自动调整绘图的大小,以便宽度与点数成正比,而无需“varwidth”?此外,如果没有方向参数,水平视图实际上具有比例性,但这可能隐藏在被挤压在一起的地块中?
    • 分组使得每个框有 20 个观察值。每组箱线图的宽度约为0.9*range(x)。 varwidth 参数通过观察次数控制宽度,因此在应用 cut_number() 时,varwidths 应该都相等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多