首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fun.min、fun.max和stat_summary是如何工作的?

fun.min、fun.max和stat_summary是如何工作的?
EN

Stack Overflow用户
提问于 2022-07-20 04:25:30
回答 2查看 165关注 0票数 0

对不起,我知道这个问题实际上已经被问到here了,但是我仍然不明白这些摘要函数( fun.min、fun.max、fun)是如何真正工作的。在手册示例中,这些函数通常在以下上下文中定义为

代码语言:javascript
运行
复制
 ggplot(data = <DATA>) + 
  stat_summary(
    mapping = aes(<MAPPINGS>),
    fun.min = min,
    fun.max = max,
    fun = median
  )

据我所知,fun.min = min将摘要函数定义为min基R函数,但是会发生什么呢?fun.min如何知道如何找到映射参数的最小值?退一步,为什么fun.min必须被定义为min基R函数,因为它不是已经定义为在向量中找到最小值,然后返回一个数字吗?

EN

Stack Overflow用户

回答已采纳

发布于 2022-07-20 07:14:33

让我们从一个简单的例子开始:

代码语言:javascript
运行
复制
library(ggplot2)

base <- ggplot(data = mtcars, mapping = aes(cyl, mpg)) + 
  geom_point()

base + stat_summary(
  fun.min = min,
  fun.max = max,
  fun = median,
  color = "red"
)

现在请回答你们的问题:

据我所知,fun.min = min将摘要函数定义为min基R函数,但是会发生什么呢?fun.min如何知道如何找到映射参数的最小值?

stat_summary下,它聚合通过data参数传递的数据集,即对于x变量的每个值或类别(或者在更一般的情况下,xgroup美学之间的交互),它为映射在y aes上的变量计算funfun.minfun.max定义的三个统计数据。然后,fun计算的值映射到y上,fun.min值映射到ymin上,fun.max值映射到ymax上。

这个步骤的结果可以通过ggplot2::layer_data显示。对于基本示例

代码语言:javascript
运行
复制
layer_data(last_plot(), 2) # The 2 means we want the data for the second layer. geom_point = first layer, stat_summary = second layer
#>   x group    y ymin ymax PANEL flipped_aes colour size linetype shape fill
#> 1 4    -1 26.0 21.4 33.9     1       FALSE    red  0.5        1    19   NA
#> 2 6    -1 19.7 17.8 21.4     1       FALSE    red  0.5        1    19   NA
#> 3 8    -1 15.2 10.4 19.2     1       FALSE    red  0.5        1    19   NA
#>   alpha stroke
#> 1    NA      1
#> 2    NA      1
#> 3    NA      1

此外,ggplot2还添加了许多其他内容,基本上与

代码语言:javascript
运行
复制
library(dplyr, warn = FALSE)

mtcars |> 
  group_by(x = cyl) |> 
  summarise(y = median(mpg), ymin = min(mpg), ymax = max(mpg))
#> # A tibble: 3 × 4
#>       x     y  ymin  ymax
#>   <dbl> <dbl> <dbl> <dbl>
#> 1     4  26    21.4  33.9
#> 2     6  19.7  17.8  21.4
#> 3     8  15.2  10.4  19.2

后退一步,为什么fun.min必须被定义为min基R函数,因为它不是已经定义为在向量中找到最小值,然后返回一个数字吗?

答案是否定的。fun.min不被定义为最小值或min函数。默认情况下,它是NULL (参见?stat_summary)。fun.min提供了用于计算要映射到ymin aes上的汇总统计数据的函数。如果将fun.min固定在minimum上,stat_summary就不会那么有用,例如,我们经常使用fun.minfun.max来显示置信区间或显示四分位数范围:

代码语言:javascript
运行
复制
base + stat_summary(
    fun.min = ~quantile(.x, probs = .25),
    fun.max = ~quantile(.x, probs = .75),
    fun = median,
    color = "red"
  )

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73045987

复制
相关文章

相似问题

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