You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确定stat_summary函数的fun、fun.data参数允许使用哪些函数

ggplot2 stat_summary函数参数规则说明

为什么第三方包的函数可以传入使用

stat_summary的汇总类参数底层调用了R的match.fun()函数做函数匹配,你传入函数名字符串时,R会在当前所有已加载的环境(包括已加载的第三方包的命名空间)中搜索对应函数,只要对应的包已经通过library()加载,或者你传入完整的函数命名空间调用(比如fun = psych::geometric.mean),不管是哪个包的函数都可以被正常识别调用,不需要是ggplot2内置的函数。你甚至可以传入自己写的自定义汇总函数。

fun、fun.data参数的合法取值规则

两类参数的要求各不相同,具体规则如下:

  • fun参数要求:
    接受两类输入:直接传入函数对象(比如fun = mean),或者传入函数字符串名(比如fun = "mean")。对应的函数需要满足:输入为单个数值向量,输出为单个数值,所有满足这个要求的函数都可以使用,比如均值、中位数、几何均值、分位数等。
  • fun.data参数要求:
    同样支持函数对象和字符串名两种输入,对应的函数需要满足:输入为单个数值向量,输出为一行三列的数据框,列名固定为y、ymin、ymax,分别代表汇总值、下限、上限,这类函数一般用来绘制带误差线的图形,比如均值加标准误、均值加置信区间的场景。
  • 额外补充:*stat*参数是用来指定统计变换的名称,合法取值都是ggplot2内置的统计变换名,比如stat = "summary"就等价于用stat_summary()函数,所有内置stat的完整列表可以在?ggplot2::stat官方文档中查询。

完整参考文档查询方式

所有参数的官方完整规则都可以通过R控制台直接查询:

  • 运行?stat_summary即可调出该函数的完整官方文档,所有参数的取值要求、注意事项都写在Arguments部分,比网上零散的示例覆盖更全面
  • 运行?mean_se可以查看ggplot2自带的所有汇总函数列表,包含常用的标准误、置信区间、分位数汇总函数,适合直接作为fun.data的参数取值

补充示例:自定义函数传入

你完全可以自己写汇总函数传入,比如要绘制90%分位数的柱状图,写法如下:

library(ggplot2)
df <- mtcars
df$carb <- as.factor(df$carb)
# 自定义90%分位数函数
quantile_90 <- function(x) {
  quantile(x, probs = 0.9, na.rm = TRUE)
}
ggplot(df, aes(carb, hp)) +
  stat_summary(fun = quantile_90, geom = "bar")

内容的提问来源于stack exchange,提问作者Rafa2093

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:57:05