【问题标题】:How can I view the computed varialbles computed by ggplot2 geom_boxplot?如何查看由 ggplot2 geom_boxplot 计算的计算变量?
【发布时间】:2017-02-10 17:16:50
【问题描述】:

我使用 ggplot2 geom_boxplot 创建了一些箱线图。我看到它在我的数据帧上计算了一组变量;宽度、ymin、lower、notchlower、middle、notchupper、upper 和 ymax。似乎应该有一种方法可以提取这些计算值,以便我可以查看它们。我试过summary(boxplot)和str(boxplot)。这些给了我很多关于我的图是如何创建的信息,但它们没有列出计算的变量。

有没有办法快速显示这些变量?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您可以按照此处的建议使用ggplot_buildhttps://stackoverflow.com/a/25381297/3638464

    library(ggplot)
    
    gg_bp <- 
      ggplot(mpg, aes(class, hwy)) +
      geom_boxplot()
    

    gg_bp预览:

    boxplot

    gg_bp_build <- 
      ggplot_build(gg_bp)
    
    gg_bp_build$data
    #> [[1]]
    #>   ymin lower middle upper ymax                       outliers notchupper
    #> 1   23  24.0   25.0  26.0   26                                  26.41319
    #> 2   23  26.0   27.0  29.0   33                 35, 37, 35, 44   27.69140
    #> 3   23  26.0   27.0  29.0   32                                  27.74026
    #> 4   21  22.0   23.0  24.0   24                             17   23.95278
    #> 5   15  16.0   17.0  18.0   20                 12, 12, 12, 22   17.55009
    #> 6   20  24.5   26.0  30.5   36                         44, 41   27.60241
    #> 7   14  17.0   17.5  19.0   22 12, 12, 25, 24, 27, 25, 26, 23   17.90132
    #>   notchlower x PANEL group ymin_final ymax_final  xmin  xmax xid newx new_width
    #> 1   23.58681 1     1     1         23         26 0.625 1.375   1    1      0.75
    #> 2   26.30860 2     1     2         23         44 1.625 2.375   2    2      0.75
    #> 3   26.25974 3     1     3         23         32 2.625 3.375   3    3      0.75
    #> 4   22.04722 4     1     4         17         24 3.625 4.375   4    4      0.75
    #> 5   16.44991 5     1     5         12         22 4.625 5.375   5    5      0.75
    #> 6   24.39759 6     1     6         20         44 5.625 6.375   6    6      0.75
    #> 7   17.09868 7     1     7         12         27 6.625 7.375   7    7      0.75
    #>   weight colour  fill size alpha shape linetype
    #> 1      1 grey20 white  0.5    NA    19    solid
    #> 2      1 grey20 white  0.5    NA    19    solid
    #> 3      1 grey20 white  0.5    NA    19    solid
    #> 4      1 grey20 white  0.5    NA    19    solid
    #> 5      1 grey20 white  0.5    NA    19    solid
    #> 6      1 grey20 white  0.5    NA    19    solid
    #> 7      1 grey20 white  0.5    NA    19    solid
    

    【讨论】:

    • 请使用layer_data()函数代替ggplot_build(),如下图:stackoverflow.com/a/47662114/4975218
    • @ClausWilke,这会产生与samplePlot_build$data[[i]] 完全相同的输出,其中i 是层号。
    • 是的,但是layer_data() 使用官方 API,而您的代码访问的内部对象的结构可能会在未来的 ggplot2 版本中发生变化。
    • 啊!感谢您澄清这一点:)我知道我错过了一些东西。
    【解决方案2】:

    修改我之前的回答

    这个问题不是很好,因为 (a) 它没有给出可重现的例子,并且 (b) 它承认使用graphics::boxplot() 的结果来获得答案的可能性。

    OP 缺少的是 ggplot2::geom_boxplot 返回一个 ggplot2 图形对象,而不是数据的汇总统计信息。

    有关基本图形解决方案,请参阅 help(boxplot) -- boxplot 函数返回您想要的,而不是尝试从 geom_boxplot() 获取。

    > bp <- boxplot(mpg~cyl, data=mtcars) 
    > 
    > str(bp)
    List of 6
     $ stats: num [1:5, 1:3] 21.4 22.8 26 30.4 33.9 ...
     $ n    : num [1:3] 11 7 14
     $ conf : num [1:2, 1:3] 22.4 29.6 18.3 21.1 14.3 ...
     $ out  : num [1:2] 10.4 10.4
     $ group: num [1:2] 3 3
     $ names: chr [1:3] "4" "6" "8"
    

    stats 组件包含每个组的 5 位数摘要。

    > bp$stats
         [,1]  [,2] [,3]
    [1,] 21.4 17.80 13.3
    [2,] 22.8 18.65 14.3
    [3,] 26.0 19.70 15.2
    [4,] 30.4 21.00 16.4
    [5,] 33.9 21.40 19.2
    >
    

    ggplot2 中,摘要由stat_boxplot 计算。但是,我不知道如何从结果中提取这些

    【讨论】:

    • 这不是一个答案,而是一个解决方案。问题仍然存在;这个答案也被接受了。
    • @AdamRyczkowski 我编辑了我以前的答案;您可能会删除您的反对票
    • 酷。就个人而言,我也很好奇如何获得这些统计数据。感谢您的编辑(以我们社区的名义 :-))
    猜你喜欢
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多