使用ggplot2与geom_line绘制折线图报错求助
问题描述
运行ggplot2代码时出现如下报错:
In geom_line(stat = "summary", fun.y = mean) :
Ignoring unknown parameters:fun.y
原代码:
ggplot(aes(x = age, y = friend_count), data = pf) + coord_cartesian(xlim = c(13,90)) + geom_point(alpha = 0.05, position = position_jitter(h = 0), color = 'orange') + coord_trans(y = "sqrt") + geom_line(stat = 'summary', fun.y = mean) + geom_line(stat = 'summary', fun.y = quantile, fun.args = list(probs = .1)) + geom_line(stat = 'summary', fun.y = quantile, fun.args = list(probs = .9))
同时RStudio的linter对list()中的probs参数存在异议。
解决方案
- 从ggplot2 3.0.0版本开始,
fun.y参数已被废弃,替换为fun参数。所有用到fun.y的地方直接改成fun即可解决报错。 - 针对linter的异议,改用
stat_summary()结合geom="line"的写法,这是ggplot2更推荐的语法,既能让参数结构更清晰,也能解决linter的提示问题。
修改后的完整代码:
ggplot(aes(x = age, y = friend_count), data = pf) + coord_cartesian(xlim = c(13,90)) + geom_point(alpha = 0.05, position = position_jitter(h = 0), color = 'orange') + coord_trans(y = "sqrt") + stat_summary(geom = "line", fun = mean) + stat_summary(geom = "line", fun = quantile, fun.args = list(probs = 0.1)) + stat_summary(geom = "line", fun = quantile, fun.args = list(probs = 0.9))
补充:如果坚持保留geom_line(stat='summary')的写法,仅替换fun.y为fun也能解决报错,但stat_summary()的写法更符合ggplot2的语法设计逻辑,可读性更强。
内容的提问来源于stack exchange,提问作者Brian Scott
相关产品推荐
相关产品推荐

