r - 用变量注释指数函数 ggplot2
问题描述
我正在尝试用方程注释 ggplot 图y=ae^(bx)
我拟合了一个线性模型log(y) ~ x
,并得到了系数的估计值:截距和斜率,以及 r^2 值:
a = round(exp(model$coefficients[1]), 2)
b = round(model$coefficients[2], 2)
r = round(summary(model)$r.squared, 2)
我想将拟合模型的方程作为指数添加到 ggplot 图,所以假设我的系数是:
a= -2
b= 0.5
r = 0.76
我使用的示例来自:如何在使用以下代码的 ggplot 图上添加指数回归方程和 R2:
eq <- paste0('paste(y, " = ", italic(e^{', round(exp.mod$coefficients[2], 2),
"*x ~~+~~ ", round(exp.mod$coefficients[1], 2),
'}), ~~~~~~~~R^2~ "="~', round(summary(exp.mod)$r.squared, 2), ")")
但这给出了一个有点不同的公式(y = e ^(ax + b)),我试图重新排列它,但没有一个尝试成功
我也尝试了类似的事情,如下所示:注释指数函数 ggplot2但他们使用常量作为他们的方程并且我有变量,所以我不知道如何用变量替换数字
最后,为了将方程添加到绘图中,我尝试使用以下行:
ggplot()+
annotate("text", aes(x=3, y=11), label = "y == a*e^{b*x}", parse =TRUE)
解决方案
您的最后一行代码存在问题:1)annotate()
不支持将数据中的变量映射到美学,一个只是常量值作为参数;2) 整个上标,包括减号必须放在大括号内。(等式看起来更好一些*
,将指数前面的替换~
为增加一点空间,但这是可选的。)
library(ggplot2)
ggplot()+
annotate("text", x=3, y=11, label = "y == 13.048*e^{-0.697*x}", parse =TRUE)
表达式有一个棘手的语法。我在这里使用了您的假设值。为了清楚起见,我改成r
了r.squared
。
a= -2
b= 0.5
r.squared = 0.76
eq <- paste0('y~`=`~', a,
'~e^{', b ,
'*x}*"; "*R^2~`=`~', r.squared)
ggplot()+
annotate("text", x=3, y=11, label = eq, parse =TRUE)
由reprex 包于 2021-09-21 创建(v2.0.1)
推荐阅读
- branch.io - 每次我删除并重新安装应用程序时,branch.io +is_first_session 都会给出随机值
- java - 使用 CreateWindowEx 创建一个绝对大小的无边框窗口
- node.js - Ng 模型输入为数组
- python-3.x - 在接受客户端连接时检测(非阻塞)按键
- xcode - Instruments 在 macOS Mojave 上使用 Hardened Runtime 使应用程序崩溃
- c - gcc 将自动调整结构大小
- c# - C# Project 在源代码管理中放入什么(Bitbucket)
- python - Neo4j python 驱动程序 3 月 8 日发布:ModuleNotFoundError: No module named 'neo4j'
- android - 不允许在后台启动服务 Intent 应用程序
- node.js - Changes not showing up in NodeJs/ReactJs apllication running on Heroku?