为何无法复现R4DS书中的ggplot分组分离绘图示例?
问题根因
该语法并未被弃用,无法复现效果的核心原因是版本差异:2017版《R for Data Science》编写时所使用的ggplot2版本,geom_smooth()对小样本数据集默认使用loess拟合方法,而3.4.0及之后的ggplot2版本调整了默认方法的选择逻辑,分组后样本量较小时会出现拟合异常、无多条曲线的问题。
解决方法
步骤1:确认变量类型与包加载
首先确保你已正确加载ggplot2包,且内置mpg数据集的drv字段为分类类型:
library(ggplot2) # 输出应为 "factor" 或 "character" class(mpg$drv)
如果输出为数值型,先转换为分类变量:
mpg$drv <- as.factor(mpg$drv)
步骤2:显式指定拟合方法
在代码中显式指定method = "loess",匹配书籍编写时的默认配置即可复现效果:
# 单条全量拟合曲线 ggplot(data = mpg) + geom_smooth(mapping = aes(x = displ, y = hwy), method = "loess") # 按drv分组的无区分色拟合曲线 ggplot(data = mpg) + geom_smooth(mapping = aes(x = displ, y = hwy, group = drv), method = "loess") # 按drv分组的彩色拟合曲线(隐藏图例) ggplot(data = mpg) + geom_smooth( mapping = aes(x = displ, y = hwy, color = drv), method = "loess", show.legend = FALSE )
内容的提问来源于stack exchange,提问作者rubengavidia0x
相关产品推荐
相关产品推荐

