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

为何无法复现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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:06:00