将指数趋势线添加到ggplot

时间:2020-05-07 10:35:52

标签: r ggplot2 exponential trend

我有一个名为daph的数据集

daph <- read.table(text = "t v 20 19 25 78.2 30 254.8 ",header = TRUE, sep = "")

我想做的是向带有这些值的条形图中添加指数趋势线

ggplot(data=daph, aes(x=t, y=v, width=1)) + geom_bar(stat="identity", fill="steelblue") + theme_minimal(base_size=18) + geom_smooth(method = 'nls', formula = y ~ a * exp(b * x), se = FALSE, method.args = list(start = list(a = 1, b = 1)))

但每次都会给我一条错误消息(奇异梯度,粗略翻译)。

我想这与我的初始值有关,但是我对数学还不够了解。

也许有些人可以帮助我:)

1 个答案:

答案 0 :(得分:0)

众所周知,nls很难安装。对于您的情况,尝试提供更好的起始值或考虑使用线性模型,您可以在此post中进行检查:

lmfit = lm(log(v) ~ t,data=daph)
A = coef(lmfit)[1]
B = coef(lmfit)[2]

ggplot(data=daph, aes(x=t, y=v, width=1)) +
geom_bar(stat="identity", fill="steelblue") +
theme_minimal(base_size=18) +
geom_smooth(method = 'nls', formula = y ~ a * exp(b * x), 
se = FALSE, method.args = list(start = list(a = A, b = B)))

enter image description here

数据:

structure(list(t = c(9, 21, 29), v = c(19, 78.2, 254.8)), row.names = c(NA, 
-3L), class = "data.frame")