【发布时间】:2019-06-16 14:13:29
【问题描述】:
我一直在编写一些代码,以根据数据框中的数据迭代创建散点图,并将具有二阶回归线的每个散点图导出到单个 PDF 文件,每个页面作为其自己的散点图。我想做的是生成回归线方程并将其放置在每次迭代的散点图的左上角。
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 数据框的示例:
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")
【问题讨论】:
-
对于这样的问题,你应该提供一个可重现的小例子;
Infil_Data未定义并且您没有提供您正在使用的库(例如,用于您正在调用的walk命令的库)。另外,mytable已定义但未使用,这应该与Infil_Data相同吗? -
谢谢 steveb,我还有什么需要补充或澄清的吗?
-
如果您的代码示例中使用了一个函数,您应该包含
library(ggplot2)、library(purrr)等行。如果未使用\mytable`,您应该删除它,因为它没有与问题有关。如果您还有其他问题,那就应该去那里。 -
好的,我会删除它。我只是把它放在那里,因为它是我整体代码的一部分,并且与我提供的图片相关联。感谢 cmets 如何让我的问题变得更好。
-
您能否运行
dput(Infil_Data)并将结果替换为您所拥有的tibble::tribble(......)。所以你可以将Infil_Data设置为dput的结果。
标签: r ggplot2 regression