ggplot2中stat_summary忽略mult参数的问题求助
解决ggplot2中stat_summary使用mean_sdl时
mult参数被忽略的警告 这个警告的核心原因是ggplot2版本更新后,stat_summary传递额外参数给统计函数的方式发生了变化。
在较早的ggplot2版本中,你可以直接将mult这类属于mean_sdl函数的参数传给stat_summary,它会自动把这些参数传递给目标统计函数。但在新版本的ggplot2中,stat_summary不再自动转发未识别的参数,必须通过fun.args参数显式传递这些额外参数给mean_sdl。
修正后的代码示例
针对你给出的两段代码,正确的写法应该是:
- 绘制crossbar的版本:
p <- ggplot(TG, aes(x=dose, y=len)) + geom_violin(trim=FALSE) p + stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1), geom = "crossbar", width = 0.1)
- 绘制pointrange的版本:
p + stat_summary(fun.data = mean_sdl, fun.args = list(mult = 2), geom = "pointrange", color = "red")
为什么这样有效?
mean_sdl函数本身确实需要mult参数来指定标准差的倍数,但现在stat_summary要求你把这类属于目标函数的参数打包到fun.args的列表里,这样它才能正确传递给mean_sdl,而不是把mult当作自己的参数处理(这就是警告的来源)。
你提到的那些旧示例文档还沿用了旧版ggplot2的语法,所以在新版本中会报错或警告,更新语法后就能正常工作了。
内容的提问来源于stack exchange,提问作者Crawdaunt
相关产品推荐
相关产品推荐

