如何在ggplot2中使用变量标注指数回归拟合方程与R²值
解决方案
你只需要将提前计算好的a/b/r变量值,通过字符串拼接注入到标注内容中,同时符合R的plotmath语法规则即可,示例代码如下:
第一步:构建标注字符串
# 你已经提前计算好了三个系数 a = round(exp(model$coefficients[1]), 2) b = round(model$coefficients[2], 2) r = round(summary(model)$r.squared, 2) # 拼接符合plotmath语法的标注文本,~代表空格 eq_label <- paste0("y == ", a, " * e^{", b, " * x} ~~~~~~~~ R^2 == ", r)
第二步:在ggplot中添加标注
注意annotate不需要套aes(),直接传入固定的坐标值即可:
ggplot() + # 此处保留你原本的绘图逻辑,例如geom_point、拟合线等代码 annotate("text", x = 3, y = 11, label = eq_label, parse = TRUE)
补充说明
你之前的代码失效有两个原因:
- 标注字符串写死为
"y == a*e^{b*x}",R不会自动将字符串里的a/b替换为你定义的变量值,必须通过拼接把实际数值写入字符串 annotate是用于添加固定位置的标注,不需要用aes()映射数据,多余的aes()可能引发报错
如果需要让公式中的e显示为斜体,只需要调整标注字符串为:
eq_label <- paste0("y == ", a, " * italic(e)^{", b, " * x} ~~~~~~~~ R^2 == ", r)
内容的提问来源于stack exchange,提问作者yuliaUU
相关产品推荐
相关产品推荐

