假设数据框dat如下:

dat <- data.frame(N = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
                  Hybrid = c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'), 
                  Yield = c(10, 12, 14, 8, 9, 11, 15, 16, 18, 19))

我们可以使用ggplot2和dplyr包来完成这个任务。

首先,我们需要计算每个Hybrid的Yield和N之间的线性加平台拟合方程,可以使用dplyr的group_by和do函数来实现:

library(dplyr)

fit_func <- function(df) {
  lm(Yield ~ N, data = df)
}

dat_fit <- dat %>% 
  group_by(Hybrid) %>% 
  do(model = fit_func(.))

这里,我们定义了一个fit_func函数,它接受一个数据框作为输入,并返回该数据框的线性模型对象。然后,我们使用group_by将数据框按照Hybrid分组,并使用do函数将每个分组应用于fit_func函数,得到每个Hybrid的线性模型对象。

接下来,我们可以使用ggplot2来可视化每个Hybrid的Yield和N之间的线性加平台拟合方程。我们可以使用geom_smooth函数来拟合每个Hybrid的线性模型,并使用annotate函数来标注每个Hybrid的拟合方程:

library(ggplot2)

ggplot(dat, aes(x = N, y = Yield, color = Hybrid)) + 
  geom_point() + 
  facet_wrap(~Hybrid) + 
  geom_smooth(data = dat_fit, method = "lm", se = FALSE, size = 1.5) + 
  theme_bw() + 
  labs(x = "N", y = "Yield") + 
  theme(legend.position = "none") + 
  annotate(geom = "text", x = 1, y = 20, label = "Yield = a + b*N", size = 4, hjust = 0, vjust = 0)

这里,我们使用facet_wrap函数将不同Hybrid的数据分别显示在不同的子图中。然后,我们使用geom_smooth函数来拟合每个Hybrid的线性模型,并使用se = FALSE参数来禁用置信区间的绘制,使用size参数来调整拟合线的粗细。最后,我们使用annotate函数来标注每个Hybrid的拟合方程,其中x和y参数指定文本的位置,label参数指定文本的内容,size参数指定文本的大小,hjust和vjust参数指定文本的水平和垂直对齐方式。

运行上述代码,我们可以得到一个可视化的结果,其中每个Hybrid的Yield和N之间的线性加平台拟合方程被标注在图中:

linear_model_fit

R语言线性加平台拟合及可视化:不同Hybrid的Yield与N关系分析

原文地址: https://www.cveoy.top/t/topic/mx25 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录