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

R语言绘制年度数据线性趋势线失败的解决方法

你之前几种方法失败都是语法、变量引用的低级错误,对应问题点:

  1. 方法1里type="line"是拼写错误,R基础绘图里连线类型的参数值是"l",传"line"不会触发连线渲染,而且这个方法本来就是画逐点连线,不是拟合趋势线
  2. 方法2完全写反了自变量因变量,还引用了根本不存在的means对象,相当于拿年份当结果去拟合不存在的变量,坐标轴、线方向全错
  3. 方法3、4没出趋势线,基本是因为你没给模型/绘图函数指定数据来源,要么环境里没有和列名同名的向量,要么ggplot里formula写法错误导致模型拟合失败

下面给两种可直接运行的正确实现,用你给出的测试数据就能复现你要的红色直线趋势线效果:

先构造测试数据

df <- data.frame(
  b = c(2015, 2016, 2017, 2018, 2019, 2020),
  values = c(0.1239, 0.1147, 0.1151, 0.1195, 0.1143, 0.0856)
)

方法一:基础R绘图实现

# 绘制散点,明确指定数据来源为df
plot(values ~ b, data = df,
     xlab = "Year", 
     ylab = "Values (%)", 
     main = "Profit on equity", 
     pch = 19,
     ylim = c(0.08, 0.13))
# 拟合线性趋势模型
fit <- lm(values ~ b, data = df)
# 添加红色趋势线,可调整线宽
abline(fit, col = "red", lwd = 2)
grid()
box()

方法二:ggplot2 实现

library(ggplot2)
ggplot(df, aes(x = b, y = values)) +
  geom_point(size = 2) +
  geom_smooth(method = "lm",
              formula = y ~ x, # 这里用映射后的x、y即可,不要写原列名
              se = FALSE, # 关闭置信区间阴影,只保留直线
              col = "red",
              linewidth = 1.5) +
  labs(
    x = "Year",
    y = "Values (%)",
    title = "Profit on equity"
  ) +
  theme_bw()

排错提示

如果运行后还是不显示趋势线,先单独执行lm(values ~ b, data = df)看是否报错:

  • 如果报"object not found",检查列名是否拼写正确,有没有多余空格、大小写错误
  • 如果模型能正常输出系数但线不显示,检查年份列b是不是存成了字符/因子类型,改成数值型即可正常绘制

内容的提问来源于stack exchange,提问作者Benny Van

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:36:23