如何在我的图上添加指数趋势线?

问题描述 投票:0回答:2

我有一些时间以上的生物量(细胞浓度)数据,我想像在 Excel 上一样添加指数趋势线。这在 Excel 上非常容易,但从我在互联网上看到的情况来看,在 R 中似乎要难得多。例如,一个数据框是 细胞浓度高于 L

的数据框

我想像在 excel 中一样绘制它

与趋势线的方程。

我在互联网上看到了一些解决方案,但我的数据从未成功,因为总是存在一些问题,例如起始值不正确或不完整。

我知道我必须使用线性回归和非线性回归,然后使用对数进行指数拟合。但是我唯一一次认为我成功了,结果比Excel低两倍。

对不起我的英语,我是法国人。我真的很希望有人能帮助我,因为我非常需要帮助,这是为了我的硕士 2 学位实习。

r excel curve exponential trendline
2个回答
0
投票

请注意不要提供数据的屏幕截图,而是提供使问题可重现的代码。您可以永远提供

dput()
的输出作为问题的一部分,并将数据框的名称作为函数的参数。

我在下面提供的内容很老套,因为公式不是从数据本身得出的,而只是遵循 excel 图中提供的方程式。

exp_curve <- function(x) { 17353 * exp(0.4758 * x) }

mydf <- data.frame(cell = c(1.03 * 1000, 
                            8.73 * 1000, 
                            1.53 * 10000, 
                            4.98 * 100000, 
                            8.24 * 100000, 
                            4.61 * 1000000, 
                            5.52 * 1000000, 
                            5.99 * 1000000, 
                            7.59 * 1000000, 
                            7.28 * 1000000, 
                            5.9 * 1000000),
                   day = c(0, 4, 5, 6, 8, 11, 12, 14, 18, 19, 20))

trend_df <- data.frame(day = 0:14, cell = exp_curve(0:14))

form_df <- data.frame(day = 12, cell = 11000000, label = "y = 17353e<sup>0,4758x</sup><br>R<sup>2</sup> = 0,791")

library(ggplot2)
library(ggtext)

ggplot(data = trend_df, aes(x = day, y = cell)) + 
  stat_smooth(formula = y ~ exp_curve(x)) +
  geom_point(data = mydf, aes(x = day, y = cell)) +
  geom_textbox(data = form_df, aes(label = label), box.colour = alpha("black", 0), fill = alpha("white", 0)) +
  labs(title = "Growth curve of C1 culture", y = "Biomass", x = "Days") +
  scale_y_continuous(labels = scales::label_scientific())


0
投票

对于那些要求写下我的数据以便您可以更好地理解和可视化/帮助我的人

输入(Df1) 结构(列表(天= c(0L,1L,4L,5L,6L,8L,11L,12L,14L, 18L, 19L, 20L), 生物质 = c(10330.1846864179, 13057.5028857253, 87274.1823778376, 153234.186225471, 497754.251635244, 824191.823778376, 4605805.30973451, 3515812.0430935, 5993561.94690265, 7593713.15890727, 7283247.21046556, 5904830.70411697)), class = "data.frame", row.names = c(NA, -12L))

或者还有 |天|生物质| |:----|------------: | | 0 | 10330.18 | | 1 | 13057.50 | | 4 | 87274.18 | | 5 | 153234.19 | | 6 | 497754.25 | | 8 | 824191.82 | | 11 | 4605805.31| | 12 | 3515812.04| | 14 | 5993561.95| | 18 | 7593713.16| | 19 | 7283247.21| | 20 | 5904830.70|

© www.soinside.com 2019 - 2024. All rights reserved.