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

如何在ggplot图表的副标题中显示回归线方程?

问题:将ggplot回归线方程移至副标题

现有批量生成水位过程线的代码,目前通过stat_regline_equation在图表内显示连续数据的回归线方程,需求是把该方程添加到图表副标题中,与现有副标题内容合并。

解决方案

可以通过提前计算回归方程并将其字符串拼接至副标题参数实现,步骤如下:

  1. 提取回归线方程字符串:

    • 方法一:手动基于线性回归模型系数构造方程
    • 方法二:利用ggpmisc包(stat_regline_equation所属包)直接生成与图表内一致格式的方程文本
  2. 拼接副标题内容:将提取到的方程字符串与原副标题信息合并,传入ggtitle()的subtitle参数

修改后的代码示例

library(ggplot2)
library(ggpmisc) # stat_regline_equation所属包

# 计算并提取回归线方程文本(与stat_regline_equation输出格式一致)
eq_text <- stat_regline_equation(data = cont, aes(x, y), output.type = "text")$label[1]

# 绘制图表
p <- ggplot() +
  geom_line(data = cont, aes(x, y), color = "cyan4", size = 0.5) +
  geom_point(data = disc, aes(x, y), color = "gray22", shape = 8, size = 1.5, stroke = 0.7) +
  geom_smooth(data = cont, aes(x, y), method = lm, se = FALSE, col = 'red', size = 1) +
  stat_poly_line(data = cont, aes(x, y)) +
  # 移除原有的stat_regline_equation,因为方程已移至副标题
  ggtitle(
    title = paste(station, longName),
    subtitle = paste("Well depth:", totalDepth, "ft", county, " | ", eq_text)
  ) +
  xlab("Date") + 
  ylab("Depth to water (ft)") + 
  scale_y_reverse() +
  theme(
    axis.title.x = element_text(color = "gray40", face = "bold", size = 11),
    axis.title.y = element_text(color = "gray40", face = "bold", size = 11),
    axis.text = element_text(size = 12)
  )

print(p)
dev.off()

补充说明

  • 如果不想依赖ggpmisc包,可手动构造方程:
    lm_model <- lm(y ~ x, data = cont)
    eq_text <- paste0("y = ", round(coef(lm_model)[2], 3), "x + ", round(coef(lm_model)[1], 3))
    
  • 修正了原代码中ggtitle()的语法错误(原代码多了一个右括号)
  • 需确保cont数据框中的x(日期)和y(水位深度)变量映射正确

内容的提问来源于stack exchange,提问作者Blake Burkard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:20:32