在每个图中绘制回归线方程(2的阶数)

时间:2019-01-23 03:26:44

标签: r ggplot2 regression

我一直在研究一些代码,以基于数据帧中的数据迭代创建散点图,并将每个散点图(带有二阶回归线)导出到单个PDF文件,并将每个页面作为自己的散点图。我想做的是生成回归线方程,并将其放置在每次迭代的散点图的左上角。

sprintf '%v02X', $octets                                    # E4.B8.AD

unpack 'H*', $octets                                        # e4b8ad

uc unpack 'H*', $octets                                     # E4B8AD

join ' ', map sprintf('%02X', $_), unpack 'C*', $octets     # E4 B8 AD

join ' ', map sprintf('%02X', ord($_)), split //, $octets   # E4 B8 AD

以下是我正在使用的library(gridExtra) library(purrr) library(tidyverse) plot_5 <- Infil_Data2 %>% split(.$Site_ID) %>% map2(names(.), ~ggplot(.x, aes(Sqrt_Time.x, Cal_Vol_cm)) + geom_point() + labs(title = paste(.y)) + theme(plot.title = element_text(hjust = 0.5)) + stat_smooth(mapping = aes(x = Sqrt_Time.x, y = Cal_Vol_cm), method = "lm", se = FALSE, formula = y ~ poly(x, 2, raw = TRUE), color = "red") + theme(plot.margin = unit(c(1, 5, 1, 1), "cm"))) pdf("allplots5.pdf", onefile = TRUE) walk(plot_5, print) dev.off() 数据帧的示例:

Infil_Data2

1 个答案:

答案 0 :(得分:0)

基于您所做的工作和Adding Regression Line Equation and R2 on graph的帖子,以下代码生成了pdf,每页包含一个绘图,并且绘图中包含方程式。即使比例在变化,方程也出现在图中相同的相对位置。问题中的原始代码非常接近,下面的代码仅将调用添加到stat_smooth_func

# Input data.
Infil_Data2 <-
structure(list(Time = c(0L, 30L, 60L, 90L, 120L, 150L, 180L, 
210L, 240L, 270L, 300L, 0L, 30L, 60L, 90L, 120L, 150L, 180L, 
210L, 240L, 270L, 300L, 0L, 30L, 60L, 90L, 120L, 150L, 180L, 
210L, 240L, 270L, 300L), Site_ID = c("H1", "H1", "H1", "H1", 
"H1", "H1", "H1", "H1", "H1", "H1", "H1", "H2", "H2", "H2", "H2", 
"H2", "H2", "H2", "H2", "H2", "H2", "H2", "H3", "H3", "H3", "H3", 
"H3", "H3", "H3", "H3", "H3", "H3", "H3"), Vol_mL = c(63, 62, 
60, 59, 58, 56, 54, 52.5, 50, 48.5, 46.5, 82, 77, 73, 68, 65, 
51, 56, 52, 47.5, 42.5, 37.5, 69, 67, 65, 63, 61, 60, 58, 56, 
54, 51.5, 49), Sqrt_Time.x = c(0, 5.477225575, 7.745966692, 9.486832981, 
10.95445115, 12.24744871, 13.41640786, 14.49137675, 15.49193338, 
16.43167673, 17.32050808, 0, 5.477225575, 7.745966692, 9.486832981, 
10.95445115, 12.24744871, 13.41640786, 14.49137675, 15.49193338, 
16.43167673, 17.32050808, 0, 5.477225575, 7.745966692, 9.486832981, 
10.95445115, 12.24744871, 13.41640786, 14.49137675, 15.49193338, 
16.43167673, 17.32050808), Cal_Vol_cm = c(0, 0.124339799, 0.373019398, 
0.497359197, 0.621698996, 0.870378595, 1.119058194, 1.305567893, 
1.616417391, 1.80292709, 2.051606688, 0, 0.621698996, 1.119058194, 
1.74075719, 2.113776588, 3.854533778, 3.232834782, 3.730193979, 
4.289723076, 4.911422072, 5.533121068, 0, 0.248679599, 0.497359197, 
0.746038796, 0.994718394, 1.119058194, 1.367737792, 1.616417391, 
1.865096989, 2.175946488, 2.486795986)), row.names = c(NA, 33L
), class = "data.frame")

绘图代码

# For the "stat_smooth_func", use the Laurae package.
# devtools::install_github("Laurae2/Laurae")

library(gridExtra)
library(purrr)
library(tidyverse)
library(Laurae)

plot_5 <-
    Infil_Data2 %>% 
    split(.$Site_ID) %>% 
    map2(names(.),
         ~ggplot(.x, aes(Sqrt_Time.x, Cal_Vol_cm)) + 
         geom_point() +
         labs(title = paste(.y)) +
         theme(plot.title = element_text(hjust = 0.5)) + 
         stat_smooth(mapping = aes(x = Sqrt_Time.x, y = Cal_Vol_cm),
                     method = "lm", se = FALSE, 
                     formula = y ~ poly(x, 2, raw = TRUE),
                     color = "red") +
         theme(plot.margin = unit(c(1, 5, 1, 1), "cm")) +
         stat_smooth_func(geom="text", method = "lm", hjust=0, parse=TRUE))


pdf("allplots5.pdf", onefile = TRUE)
walk(plot_5, print)
dev.off()