如何确定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
相关产品推荐
相关产品推荐

